您的位置:首页 > 其它

JVM、GC相关资料

2014-08-27 16:54 211 查看

专题:JDK内置命令:一、javah命令(C Header and Stub File Generator)二、jps命令(Java Virtual Machine Process Status Tool)三、jstack命令(Java Stack Trace)四、jstat命令(Java Virtual Machine Statistics Monitoring Tool)五、jmap命令(Java Memory Map)六、jinfo命令(Java Configuration Info)七、jconsole命令(Java Monitoring and Management Console)八、jvisualvm命令(Java Virtual Machine Monitoring, Troubleshooting, and Profiling Tool)九、jhat命令(Java Heap Analyse Tool)十、Jdb命令(The Java Debugger)十一、Jstatd命令(Java Statistics Monitoring Daemon)
java垃圾回收精华使用 VisualVM 进行性能分析及调优

JVM系列四:生产环境参数实例及分析【生产环境实例增加中】

http://ifeve.com/category/jvm/

Linux HotSopt虚拟机GC线程的CPU占用率

高吞吐低延迟Java应用的垃圾回收优化

成为JavaGC专家Part I ― 深入浅出Java垃圾回收机制

成为JavaGC专家Part II ― 如何监控Java垃圾回收机制

成为Java GC专家系列(3) ― 如何优化Java垃圾回收机制

成为Java GC专家(4) ― Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响

网友配置:
$JAVA_ARGS
.=
"
-Dresin=$SERVER_ROOT
-server
-Xmx3000M
-Xms3000M
-Xmn600M
-XX:PermSize=500M
-XX:MaxPermSize=500M
-Xss256K
-XX:+DisableExplicitGC
-XX:SurvivorRatio=1
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=0
-XX:+CMSClassUnloadingEnabled
-XX:LargePageSizeInBytes=128M
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70
-XX:SoftRefLRUPolicyMSPerMB=0
-XX:+PrintClassHistogram
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintHeapAtGC
-Xloggc:log

LinkedIn工程师用来实现高吞吐量和低延迟的GC配置
-server
-Xms40g
-Xmx40g
-XX:MaxDirectMemorySize=4096m
-XX:PermSize=256m
-XX:MaxPermSize=256m
-XX:NewSize=6g
-XX:MaxNewSize=6g
-XX:+UseParNewGC
-XX:MaxTenuringThreshold=2
-XX:SurvivorRatio=8
-XX:+UnlockDiagnosticVMOptions
-XX:ParGCCardsPerStrideChunk=32768
-XX:+UseConcMarkSweepGC
-XX:CMSParallelRemarkEnabled
-XX:+ParallelRefProcEnabled
-XX:+CMSClassUnloadingEnabled
-XX:CMSInitiatingOccupancyFraction=80
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+AlwaysPreTouch -XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-XX:+PrintTenuringDistribution
-XX:+PrintGCApplicationStoppedTime
-XX:-OmitStackTraceInFastThrow

复杂的东西从来不讨人喜欢。处理内存泄露、线程死锁和GC调优这些问题在过去是很痛苦的。
这三种问题所带来的性能问题是最难重现的,可能带来的是无休息的bug修复。
尽管性能调优需要很好的洞察力,下面是LinkedIn工程师用来实现高吞吐量和低延迟的GC配置
选项:

1.收集环境信息。在进行调优之前,你需要明白当前的问题是什么,在特殊情况下,表现为
长时间和频繁的GC停顿,也其实只是死锁和内存泄露造成的。或者其他相关的情况。但是我们
假设你选对了调优的地方。
2.下一步,你需要收集关于GC停顿的信息。-XX:+PrintGCDetails -XX:+PrintGCTimeStamps可以
获取GC停顿的信息。
3.现在,需要分析这个信息,但是如果你没有这方面的经验的话,还是不鼓励你去阅读几百页的
GC文件
但是我们假设你能在日志文件中找到问题所在。你就必须搞清楚在什么情况下需要使用CMS或者G1收集器
(新生代配置-XX:+UseParNewGC,老年代配置-XX:+UseConcMarkSweepGC),并且理解清楚伊甸园区和存活区的
比例关系以便很好的设置他们的空间大小(-XX:NewSize=6g -XX:MaxNewSize=6g -XX:MaxTenuringThreshold=2 -XX:SurvivorRatio=8)。

到现在其实才刚开始 -- 还有很多可以使用的调优选项,比如优化堆碎片甚至处理系统的大页交换功能,还有
-XX:ParGCCardsPerStrideChunk配置选项。
各虚拟机版本支持的选项有很多,不一一列出,可以针对具体问题查询相应版本的选项设置

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: