35.JVM 参数(JVM中的各种参数及含义收集器相关PrintGC等各种辅助参数)

Posted to.to

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了35.JVM 参数(JVM中的各种参数及含义收集器相关PrintGC等各种辅助参数)相关的知识,希望对你有一定的参考价值。

35.JVM 参数


说下下面jvm参数含义:

-server -Xms512m -Xmx512m -Xss1024K
-XX:PermSize=256m -XX:MaxPermSize=512m -
XX:MaxTenuringThreshold=20 XX:CMSInitiatingOccupancyFraction=80 -
XX:+UseCMSInitiatingOccupancyOnly

35.1 内存相关

选项参数详解默认值
-Xms初始堆大小
-Xmx最大堆大小
-Xmn年轻代大小(1.4or lator)整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8
-XX:newSize表示新生代初始内存的大小,应该小于-Xms的值
-XX:NewRatio设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:MaxNewSize年轻代最大值(for 1.3/1.4)
-XX:PermSize设置持久代(perm gen)初始值
-XX:MaxPermSize设置持久代最大值
-Xss每个线程的堆栈大小
-XX:ThreadStackSize
-XX:SurvivorRatioEden区与Survivor区的大小比值, 设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10
-XX:LargePageSizeInBytes内存页的大小不可设置过大, 会影响Perm的大小,基本没用过
-XX:+UseFastAccessorMethods原始类型的快速优化 1.7以后不建议使用,1.6之前默认打开的
-XX:+UseFastEmptyMethods优化空方法,1.7以后不建议使用,1.6之前默认打开的
-XX:+DisableExplicitGC关闭System.gc()
-XX:MaxTenuringThreshold设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率
-XX:+AggressiveOpts加快编译
-XX:+UseBiasedLocking锁机制的性能改善, 有偏见的锁是使得锁更偏爱上次使用到它线程。在非竞争锁的场景下,即只有一个线程会锁定对象,可以实现近乎无锁的开销。默认开启
-Xnoclassgc禁用类垃圾回收
-XX:SoftRefLRUPolicyMSPerMB每兆堆空闲空间中SoftReference的存活时间默认是1S
-XX:PretenureSizeThreshold对象超过多大是直接在旧生代分配,单位字节 新生代采用Parallel Scavenge GC时无效另一种直接在旧生代分配的情况是大的数组对象,且数组中无外部引用对象.
-XX:+CollectGen0FirstFullGC时是否先YGCfalse

35.2 收集器相关

选项参数详解默认值
-XX:+UseParallelGC选择垃圾收集器为并行收集器。此配置仅对年轻代有效。可以同时并行多个垃圾收集线程,但此时用户线程必须停止。
-XX:+UseParNewGC设置年轻代收集器ParNew
-XX:ParallelGCThreadsParallel并行收集器的线程数
-XX:+UseParallelOldGC设置老年代的并行收集器是ParallelOld
-XX:+UseG1GC使用G1收集器
-XX:MaxGCPauseMillis每次年轻代垃圾回收的最长时间(最大暂停时间)
-XX:+UseAdaptiveSizePolicy设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开.
-XX:GCTimeRatio设置垃圾回收时间占程序运行时间的,百分比公式为1/(1+n)
-XX:+ScavengeBeforeFullGCFull GC前调用YGCtrue
-XX:+UseConcMarkSweepGC使用CMS内存收集
-XX:+AggressiveHeap试图是使用大量的物理内存长时间大内存使用的优化,能检查计算资源(内存, 处理器数量)至少需要256MB内存大量的CPU/内存, (在1.4.1在4CPU的机器上已经显示有提升)
-XX:CMSFullGCsBeforeCompaction由于并发收集器不对内存空间进行压缩,整理,所以运行一段时间以后会产生"碎片",使得运行效率降低.此值设置运行多少次GC以后对内存空间进行压缩,整理
-XX:+CMSParallelRemarkEnabled降低CMS标记停顿
-XX+UseCMSCompactAtFullCollection在FULL GC的时候, 对年老代的压缩,CMS是不会移动内存的, 因此, 这个非常容易产生碎片, 导致内存不够用, 因此, 内存的压缩这个时候就会被启用。 增加这个参数是个好习惯。可能会影响性能,但是可以消除碎片
-XX:+UseCMSInitiatingOccupancyOnly使用手动定义初始化定义开始CMS收集,禁止hostspot自行触发CMS GC
-XX:CMSInitiatingOccupancyFraction=70使用cms作为垃圾回收使用70%后开始CMS收集
-XX:CMSInitiatingPermOccupancyFraction设置Perm Gen使用到达多少比率时触发
-XX:+CMSIncrementalMode设置为增量模式
-XX:CMSTriggerRatioCMSInitiatingOccupancyFraction = (100 - MinHeapFreeRatio) + (CMSTriggerRatio * MinHeapFreeRatio / 100) 处罚cms收集的比例
-XX:MinHeapFreeRatiojava堆中空闲量占的最小比例
-XX:+CMSClassUnloadingEnabled如果你启用了CMSClassUnloadingEnabled ,垃圾回收会清理持久代,移除不再使用的classes。这个参数只有在 UseConcMarkSweepGC 也启用的情况下才有用。参数如下:

35.3 辅助信息

选项参数详解默认值
-XX:+PrintGC输出形式:[GC 118250K->113543K(130112K), 0.0094143 secs]Full GC 121376K->10414K(130112K), 0.0650971 secs]
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGC:PrintGCTimeStamps
-XX:+PrintGCApplicationStoppedTime打印垃圾回收期间程序暂停的时间.可与上面混合使用
-XX:+PrintGCApplicationConcurrentTime打印每次垃圾回收前,程序未中断的执行时间.可与上面混合使用
-XX:+PrintHeapAtGC打印GC前后的详细堆栈信息
-Xloggc:filename把相关日志信息记录到文件以便分析.与上面几个配合使用
-XX:+PrintClassHistogram遇到Ctrl-Break后打印类实例的柱状信息,与jmap -histo功能相同
-XX:+PrintTenuringDistribution查看每次minor GC后新的存活周期的阈值
-XX:PrintHeapAtGC打印GC前后的详细堆栈信息

以上是关于35.JVM 参数(JVM中的各种参数及含义收集器相关PrintGC等各种辅助参数)的主要内容,如果未能解决你的问题,请参考以下文章

JVM学习十:JVM之垃圾收集器及GC参数

JVM垃圾收集—垃圾收集器及常见组合参数

JVM学习3--GC参数及收集器

深度剖析 | JVM深层系列[HotSpotVM研究系列] JVM调优的"标准参数"的各种陷阱和坑点分析(攻克盲点及混淆点)「 1 」

jvm相关参数及java内存调优常用命令方法

说说JVM常用垃圾回收器的特点、优劣势、使用场景和参数设置