一、跟踪参数
1、-verbose:gc
-XX:+printGC 二者都可以打印GC的简要信息
在Idea中设置VM options: 例如--> -verbose:gc。
2、-XX:+PrintGCDetails 可以打印GC的详细信息
-XX:+PrintHeapAtGC 每次GC时都打印堆信息
3 、-Xmx -Xms 指定堆内存的最大值和最小值 例如-Xmx20m -Xms10m
使用Runtime.getRuntime().xxx()方法能获取许多关于虚拟机配置的结果。比如
Runtime.getRuntime().maxMemory()获取最大堆内存。
4、-Xmn 设置新生代大小
-XX:NewRatio 设置新生代与老年代的比例。4就表示新生代:老年代=1:4,也就是新生代占总内存的1/5。
-XX:SurvivorRatio 设置survivor区与新生代的比例。就是from、to与eden的比例。8表示survivo:eden=2:8。就是说s占年轻代的1/10。
-XX:PermSize --XX:MaxPermSize 设置永久区的初始化空间与最大空间
-Xss 设置栈大小
5、-Xloggc:log/gc.log指定GC日志文件的输出位置
-XX:+TraceClassLoading 打印加载的类信息
-XX:+HeapDumpOnOutMemoryError 内存溢出时导出堆信息到文件
-XX:+HeapDumpPath 设置导出路径
6、推荐配置
根据实际情况调整新生代与幸存代的大小。推荐新生代占堆内存的3/8,幸存代占新生代的1/10。
最好设置-XX:+HeapDumpOnOutMemoryError与导出路径,以便排查问题。