一、java 虚拟机一些参数
-Dosgi.requiredJavaVersion=1.5 // -D表示设置property 参数,在java代码里面就可以使用System.getProperties(“osgi.requiredJavaVersion”)获取这个值
-Xverify:none //加载代码的时候不进行验证,信任代码的情况下使用,如eclipse启动时可以加这个参数,加快启动速度
-verbose:gc
-Xms512m
-Xmx512m
-Xmn128m //Yong(年轻代)的初始大小,一般Xms的1/4
-XX:+UseConcMarkSweepGC //使用CMS垃圾收集器收集老年代
-XX:+PrintGCDetails //输出GC日志
-XX:+PrintGCDateStamps
-Xloggc:gc.log //gc日志输出,可以指定路径
-XX:PermSize=64m //永久代的初始大小
-XX:MaxPermSize=64m
-XX:+DisableExplicitGC //禁用System.gc()调用
二、加上如上参数后打印的日志
2012-11-15T16:57:06.118+0800: 2.089: [GC 2.089: [ParNew: 104960K->13056K(118016K), 0.1720037 secs] 104960K->48670K(511232K), 0.1721610 secs] [Times: user=0.28 sys=0.01, real=0.17 secs]
2012-11-15T16:57:07.618+0800: 3.583: [GC 3.583: [ParNew: 117987K->13056K(118016K), 0.0986891 secs] 153601K->64983K(511232K), 0.0988357 secs] [Times: user=0.14 sys=0.01, real=0.09 secs]
2012-11-15T16:57:10.696+0800: 6.669: [GC 6.669: [ParNew: 118016K->13056K(118016K), 0.0685054 secs] 169943K->78453K(511232K), 0.0686582 secs] [Times: user=0.14 sys=0.00, real=0.08 secs]
2012-11-15T16:57:12.524+0800: 8.490: [GC 8.490: [ParNew: 118016K->11244K(118016K), 0.0525525 secs] 183413K->83007K(511232K), 0.0527229 secs] [Times: user=0.08 sys=0.00, real=0.05 secs]
以其中一例分析:
2012-11-15T16:57:12.524+0800: 8.490: [GC 8.490: [ParNew: 118016K->11244K(118016K), 0.0525525 secs] 183413K->83007K(511232K), 0.0527229 secs] [Times: user=0.08 sys=0.00, real=0.05 secs]
8.490 :表示虚拟机启动运行到8.490秒是进行了一次monor Gc ( not Full GC)
ParNew :表示对年轻代进行的GC,使用ParNew 收集器
118016K->11244K(118016K) :118016K 年轻代收集前大小,11244K 收集完以后的大小 , 118016K 当前年轻代分配的总大小
0.0525525 secs :表示对年轻代进行垃圾收集是,用户线程暂停的时间,即此次年轻代收集花费的时间
183413K->83007K(511232K) :JVM heap堆收集前后heap堆内存的变化
0.0527229 secs :整个JVM此次垃圾造成用户线程的暂停时间。
更全一点的参数说明:
[GC [<collector>: <starting occupancy1> -> <ending occupancy1>, <pause time1> secs] <starting occupancy3> -> <ending occupancy3>, <pause time3> secs] <collector> GC收集器的名称 <starting occupancy1> 新生代在GC前占用的内存 <ending occupancy1> 新生代在GC后占用的内存 <pause time1> 新生代局部收集时jvm暂停处理的时间 <starting occupancy3> JVM Heap 在GC前占用的内存 <ending occupancy3> JVM Heap 在GC后占用的内存 <pause time3> GC过程中jvm暂停处理的总时间