background image

-XX:-PrintClassHistogram:遇到 Ctrl-Break 后打印类实例的柱状信息,与 jmap -histo 功能

 

相同
-XX:-PrintConcurrentLocks:遇到 Ctrl-Break 后打印并发锁的相关信息,与 jstack -l 功能相

 


-XX:-PrintCommandLineFlags

 

:打印在命令行中出现过的标记

-XX:-PrintCompilation

 

:当一个方法被编译时打印相关信息

-XX:-PrintGC:每次 GC

 

时打印相关信息

-XX:-PrintGC Details:每次 GC

 

时打印详细信息

-XX:-PrintGCTimeStamps:打印每次 GC

 

的时间戳

-XX:-TraceClassLoading

 

:跟踪类的加载信息

-XX:-TraceClassLoadingPreorder

 

:跟踪被引用到的所有类的加载信息

-XX:-TraceClassResolution

 

:跟踪常量池

-XX:-TraceClassUnloading

 

:跟踪类的卸载信息

-XX:-TraceLoaderConstraints

 

:跟踪类加载器约束的相关信息

JVM

 

服务调优实战

服务器:8 cup, 8G mem

e.g. 
java   -Xmx3550m   -Xms3550m   -Xss128k   -XX:NewRatio=4   -XX:SurvivorRatio=4 
-XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0

调优方案:

-Xmx5g:设置 JVM 最大可用内存为 5G

 

-Xms5g:设置 JVM 初始内存为 5G。此值可以设置与-Xmx 相同,以避免每次垃圾回收完
成后 JVM

 

重新分配内存。

-Xmn2g:设置年轻代大小为 2G

 

。整个堆内存大小 = 

 

年轻代大小 + 

 

年老代大小 + 持久代大

 

小 。持久代一般固定大小为 64m,所以增大年轻代后,将会减小年老代大小。此值对系统
性能影响较大,Sun 官方推荐配置为整个堆的 3/8  

-XX:+UseParNewGC:设置年轻代为并行收集。可与 CMS 收集同时使用。JDK5.0 以上,
JVM

 

会根据系统配置自行设置,所以无需再设置此值。

-XX:ParallelGCThreads=8:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾

 

回收。此值最好配置与处理器数目相等。
-XX:SurvivorRatio=6:设置年轻代中 Eden 区与 Survivor 区的大小比值。根据经验设置为
6,则两个 Survivor 区与一个 Eden 区的比值为 2:6,一个 Survivor 区占整个年轻代的 1/8

 

-XX:MaxTenuringThreshold=30:设置垃圾最大年龄(次数)。如果设置为 0 的话,则年轻
代对象不经过 Survivor 区直接进入年老代。对于年老代比较多的应用,可以提高效率。如
果将此值设置为一个较大值,则年轻代对象会在 Survivor 区进行多次复制,这样可以增
加对象再年轻代的存活时间,增加在年轻代即被回收的概率。设置为 30 表示一个对象如
果在 Survivor 空间移动 30

 

次还没有被回收就放入年老代。

-XX:+UseConcMarkSweepGC:设置年老代为并发收集。测试配置这个参数以后,参数-
XX:NewRatio=4 就失效了,所以,此时年轻代大小最好用-Xmn 设置,因此这个参数不建

 

议使用。

 

参考资料 - JVM

 

堆内存的分代