虚拟机参数

-Xms4096m //初始堆大小

-Xmx4096m //最大堆大小

-Xmn1536m //新生代大小 eden + from + to

-Xss512K //线程大小,默认1M

-XX:NewRatio=2 //新生代和老年代的比例

-XX:MaxPermSize=64m //持久代最大值

-XX:PermSize=16m //持久代初始值

-XX:SurvivorRatio=8 // eden 区和survivor区的比例

-verbose:gc

-Xloggc:gc.log //输出gc日志文件

-XX:+UseGCLogFileRotation //使用log文件循环输出

-XX:NumberOfGCLogFiles=1 //循环输出文件数量

-XX:GCLogFileSize=8k //日志文件大小限制

-XX:+PrintGCDateStamps //gc日志打印时间

-XX:+PrintTenuringDistribution //查看每次minor GC后新的存活周期的阈值

-XX:+PrintGCDetails //输出gc明细

-XX:+PrintGCApplicationStoppedTime //输出gc造成应用停顿的时间

-XX:+PrintReferenceGC //输出堆内对象引用收集时间

-XX:+PrintHeapAtGC //输出gc前后堆占用情况

-XX:+UseParallelGC //年轻代并行GC,标记-清除

-XX:+UseParallelOldGC //老年代并行GC,标记-清除

-XX:ParallelGCThreads=23 //并行GC线程数, cpu<=8?cpu:5*cpu/8+3

-XX:+UseAdaptiveSizePolicy //默认,自动调整年轻代各区大小及晋升年龄

-XX:MaxGCPauseMillis=15 //每次GC最大停顿时间,单位为毫秒

-XX:+UseParNewGC //Serial多线程版

-XX:+UseConcMarkSweepGC //CMS old gc

-XX:+UseCMSCompactAtFullCollection //FullGC后进行内存碎片整理压缩

-XX:CMSFullGCsBeforeCompaction=n //n次FullGC后执行内存整理

-XX:+CMSParallelRemarkEnabled //启用并行重新标记,只适用ParNewGC

-XX:CMSInitiatingOccupancyFraction=80 //cms作为垃圾回收是,回收比例80%

-XX:ParallelGCThreads=23 //并行GC线程数,cpu<=8?cpu:5*cpu/8+3

-XX:-UseSerialGC //默认不启用,client使用时启用

-XX:+UseG1GC //启用G1收集器

-XX:-UseAdaptiveSizePolicy //默认,不自动调整各区大小及晋升年龄

-XX:PretenureSizeThreshold=2097152 //直接晋升到老年代的对象大小

-XX:MaxTenuringThreshold=15(default) //晋升到老年代的对象年龄,PSGen无效

-XX:-DisableExplicitGC //禁止在运行期显式地调用?System.gc()

-XX:+HeapDumpOnOutOfMemoryError //在OOM时输出堆内存快照

-XX:HeapDumpPath=./java_pid.hprof //堆内存快照的存储路径

-XX:+CMSScavengeBeforeRemark //执行CMS重新标记之前,尝试执行一此MinorGC

-XX:+CMSPermGenSweepingEnabled //开启永久代的并发垃圾收集

-XX:+UseCompressedClassPointers和-XX:+UseCompressedOops开启Compressed Class的功能后,会在Metaspace中开辟出一块新的空间(Compressed Class Space)

-XX:MetaspaceSize=N :这个参数是初始化的Metaspace大小,该值越大触发Metaspace GC的时机就越晚。随着GC的到来,虚拟机会根据实际情况调控Metaspace的大小,
可能增加上线也可能降低。在默认情况下,这个值大小根据不同的平台在12M到20M浮动。

使用java -XX:+PrintFlagsInitial命令查看本机的初始化参数,-XX:Metaspacesize为21810376B(大约20.8M)。

-XX:MaxMetaspaceSize=N :这个参数用于限制Metaspace增长的上限,防止因为某些情况导致Metaspace无限的使用本地内存,影响到其他程序。默认无上限。

-XX:MinMetaspaceFreeRatio=N :当进行过Metaspace GC之后,会计算当前Metaspace的空闲空间比,如果空闲比小于这个参数,那么虚拟机将增长Metaspace的大小。在本机该参数的默认值为40,也就是40%。设置该参数可以控制Metaspace的增长的速度,太小的值会导致Metaspace增长的缓慢,Metaspace的使用逐渐趋于饱和,可能会影响之后类的加载。而太大的值会导致Metaspace增长的过快,浪费内存。

-XX:MaxMetasaceFreeRatio=N :当进行过Metaspace GC之后, 会计算当前Metaspace的空闲空间比,如果空闲比大于这个参数,那么虚拟机会释放Metaspace的部分空间。在本机该参数的默认值为70,也就是70%。

-XX:MaxMetaspaceExpansion=N :Metaspace增长时的最大幅度。在本机上该参数的默认值为5452592B(大约为5MB)。

-XX:MinMetaspaceExpansion=N :Metaspace增长时的最小幅度。在本机上该参数的默认值为340784B(大约330KB为)。

jvisualvm监控 ,java启动参数

-Djava.rmi.server.hostname=114.67.171.251 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8777 -Dcom.sun.management.jmxremote.rmi.port=8777 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

上一篇:CLR、内存分配和垃圾回收


下一篇:metaSpace引起full gc排查过程