Trace跟踪参数
==============
打印GC的简要信息
-verbose:gc
-XX:+PrintGC
打印GC详细信息
-XX:+PrintGCDetails
打印GC发生的时间戳
-XX:+PrintGCTimeStamps
指定GC log的位置,以文件输出,帮助开发人员分析问题
-Xloggc:log/gc.log
每次一次GC后,都打印堆信息
-XX:+PrintHeapAtGC
监控类的加载
-XX:+TraceClassLoading
-XX:+PrintClassHistogram
-按下Ctrl+Break后,打印类的信息
-分别显示:序号 实例数量 总大小 类型
堆的分配参数
============================
指定最大堆和初始堆大小
-Xmx -Xms
设置新生代大小
-Xmn
-XX:NewRatio
-新生代(eden+2*s)和老年代(不包含永久区)的比值
-4表示新生代:老年代=1:4 即年轻代占堆的1/5
-XX:SurvivorRatio
-设置两个Survivor和eden的比
-8表示两个Survivor:eden = 2:8 即1个Survivor占年轻代的1/10
-XX:+HeapDumpOnOutOfMemoryError
-OOM时导出堆到文件
-XX:+HeapDumpPath
-导出OOM的路径
-XX:OnOutOfMemoryError
-在OOM时,执行一个脚本
-XX:OnOutOfMemoryError=C:\Program Files\Java\jdk1.8.0_101\bin\printstack.bat %p
脚本中的内容:C:\Program Files\Java\jdk1.8.0_101\bin\jstack -F %1 >D:\a.txt
-当程序OOM时,在D:\a.txt中将会生成线程的dump
-可以再OOM时,发送邮件,甚至是重启程序
堆分配参数总结
-根据实际情况调整新生代和幸存代的大小
-官方推荐新生代占堆的3/8
-幸存代占新生代的1/10
-在OOM时,记得Dump出堆,确保可以排查现场问题
永久区分配参数
-XX:PermSize -XX:MaxPermSize(java8中已取消永久区)
-设置永久区的初始空间和最大空间
-他们表示,一个系统可以容纳多少个类型
栈大小分配
-Xss
-通常只有几百k
-决定了函数调用的深度
-每个线程都有独立的栈空间
-局部变量 参数分配在栈上