Trace跟踪参数配置
-verbose:gc | 显示虚拟机发生内存回收的信息 | 稳定版本 | |
-XX:+PrintGC | 显示虚拟机发生内存回收的信息 | 非稳定版本 | |
[GC 1016K->776K(131072K), 0.0011560 secs]
每行开始首先是GC的类型(可以是“GC”或者“Full GC”),然后是在GC之前和GC之后已使用的堆空间,再然后是当前的堆容量,最后是GC持续的时间(以秒计)。
举例:GC将已使用的堆空间从1016K减少到776K,当前的堆容量(GC发生时)是131072K,GC持续的时间是0.0011560
秒。
-XX:+PrintGCDetails | 打印GC详细信息 | |
-XX:+PrintGCTimeStamps | 打印GC发生的时间戳 | |
-Xloggc | 缺省的GC日志是输出到终端的,使用-Xloggc:也可以输出到指定的文件。 | |
例 -Xloggc:log/gc.log 需要注意这个参数隐式的设置了参数-XX:+PrintGC和-XX:+PrintGCTimeStamps,但为了以防在新版本的JVM中有任何变化,我仍建议显示的设置这些参数。
-XX:+PrintHeapAtGC | 每次GC后,都打印堆的信息 |
-XX:+TraceClassLoading | 监控类的加载 |
-verbose | 显示虚拟机的运行情况 |
堆的参数配置
参数名称 | 含义 | 默认值 | |
-Xms | 初始堆大小 | 物理内存的1/64(<1GB) | 用来设置程序初始化的时候内存栈的大小,增加这个值的话你的程序的启动性能会得到提高。 |
-Xmx | 指定最大堆 | 物理内存的1/4(<1GB) | 空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。 |
-Xmn | 设置新生代大小 | Sun官方推荐配置为整个堆的3/8 | 增大年轻代后,将会减小年老代大小.此值对系统性能影响较大。 这是一个绝对值数; |
-XX:NewSize | 设置新生代大小 | | 这是一个比例值; 4 表示新生代:老年代=1:4 即年轻代占整个对的1/5; |
-XX:SurvivorRatio | 设置两个Survivor区和eden的比 | 幸存代占新生代的1/10 | 8表示 两个Survivor :eden=2:8,即一个Survivor占年轻代的1/10 |
-XX:+HeapDumpOnOutOfMemoryError | OOM时导出堆到文件 | | |
-XX:+HeapDumpPath | 导出OOM的路径 | | -Xmx20m -Xms5m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump |
-XX:PermSize | 设置永久区的初始空间 | | |
-XX:MaxPermSize | 设置永久区的最大空间 | | |
栈的参数配置
栈是每个线程开启的时候都会分配一个空间,所以它通常只有几百K,不会很大。栈空间是和所能容纳的线程数量成反比,栈空间分配的大了,所能容纳的线程数量就少了。