-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
堆内存的分代