日常记录——JVM—GC常用参数

一、GC常用参数

1.-Xmn -Xms -Xmx -Xss : 年轻代 最小堆 最大堆 栈空间
2.-XX:+UseTLAB : 使用TLAB(线程本地分配缓存区),默认打开
3.-XX:TLABSize:设置TLAB大小
4.-XX:+DisableExplictGC:System.gc()失效
5.-XX:+PrintGC:打印GC信息
6.-XX:+PrintGCDetails:打印GC详细信息
7.-XX:+PrintGCTimeStamps:打印GC系统时间
8.-XX:+PrintVMOptions:打印JVM参数
9.-XX:+PrintFlagsFinal:打印最终参数
10.-XX:+PrintFlagsInitial:打印最终参数
11.-Xloggc:xxx/xxx/xxx/xxx-xxx-gc-%t.log:GC输出日志
12.-XX:GCLogFileSize:日志大小
13.-XX:+UseGCLogFileRotation:循环使用日志
14.-XX:NumberOfGCLogFiles=2:日志数量
15.-XX:+PrintGCCause:打印GC原因
16.-XX:MaxTenuringThreshould:年轻代升级年老代阈值
17.-XX:SurvivorRatio:年轻代伊甸园(E)和幸存区(S)比例,默认8:1:1
18.-XX:NewRatio:设置年轻代和年老代的比例,值为2,即年轻代占据内存的1/3
19.-XX:PreTenureSizeThreshould:大对象判断值

二、Parallel

1.-XX:+ParallelGCThreads:并发收集器线程数,一般设置和cpu核数相同
2.-XX:+UseAdaptiveSizePolicy:自适应各区域大小
3.-XX:GCTimeRatio:设置吞吐量大小,大于0小于100的整数,表示应用程序运行时间和垃圾收集时间的比值。该参数的默认值为99,即最大允许1%(1 / (1 + 99) = 1%)的垃圾收集时间

三、CMS

1.-XX:+UseConcMarkSweepGC:使用CMS收集器。
2.-XX:+ UseCMSCompactAtFullCollection:Full GC后,进行一次碎片整理;整理过程单线程,会引起停顿时间变长。
3.-XX:+CMSFullGCsBeforeCompaction:设置进行几次Full GC后,进行一次碎片整理
4.-XX:ParallelCMSThreads:设定CMS并发线程数量(一般情况约等于可用CPU数量)
5.-XX:CMSInitiatingOccupancyFraction:设定CMS触发比例。设定低,CMS触发频率高且浪费内存。设置高,可能触发FGC,停顿时间长
6.-XX:MaxGCPauseMills:建议最大停顿时间

四、G1

1.-XX:+UseG1GC:使用G1收集器
2.-XX:MaxGCPauseMills:建议最大停顿时间
3.-XX:+G1HeapRegionSize:Region分区大小,在1 2 4 8 16 32 内取值,大小增加,垃圾存活时间长,GC间隔长,回收慢
4.-XX:G1NewSizePercent:新生代最小比例,默认5%
5.-XX:G1MaxNewSizePercent:新生代最大比例,默认60%
6.-XX:G1OldCSetRegion:Mixed GC每次回收Region的数量,默认10%
7.-XX:ConcGCThreads:并发标记阶段,并行执行的线程数
8.-XX:GCPauseIntervalMillis:GC间隔
9.-XX:InitiatingHeapOccupancyPercent:启动并发GC时的堆内存占用百分比,默认值为 45

五、命令行

1.top:按进程使用资源排序
2.top -Hp:该进程线程资源排序
3.jps:列出java线程
4.jstack pid:该线程堆栈信息
5.jmap -histo pid | head -X: 线程中前X多的对象
6.jmap -dump:format=b,file=文件名 pid :导出堆信息,但抢占用用户线程资源

你可能感兴趣的:(JVM)