jvm相关參数,调优

常见的jvm參数例如以下

-Xmx1024m:设置JVM最大可用内存为1024M。
-Xms1024m:设置JVM初始内存为1024m。

此值能够设置与-Xmx同样,以避免每次垃圾回收完毕后JVM又一次分配内存。
-Xmn512m:设置年轻代大小为512m。

整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。

此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xss128k:设置每一个线程的堆栈大小。

JDK5.0以后每一个线程堆栈大小为1M。曾经每一个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在同样物理内存下,减小这个值能生成很多其它的线程。

可是操作系统对一个进程内的线程数还是有限制的,不能无限生成。经验值在3000~5000左右。



-XX:NewRatio=4:设置年轻代(包含Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4。年轻代占整个堆栈的1/5
-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6
-XX:MaxPermSize=16m:设置持久代大小为16m。
-XX:MaxTenuringThreshold=0:设置垃圾最大年龄。假设设置为0的话,则年轻代对象不经过Survivor区。直接进入年老代。

对于年老代比較多的应用,能够提高效率。假设将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制。这样能够添加对象再年轻代的存活时间,添加在年轻代即被回收的概论。

JVM垃圾回收打印日志。

-XX:+PrintGC
输出形式:[GC 118250K->113543K(130112K), 0.0094143 secs]
                [Full GC 121376K->10414K(130112K), 0.0650971 secs]
-XX:+PrintGCDetails
输出形式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs]
                [GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]

ps:”[GC 1“ 和“[Full GC ”说明了垃圾回收停顿的类型。“Full”代表“stop-the-world” 

“DefNew”  “Tenured” “Perm”代表GC发生的区域。它与使用的GC收集器有关

8614K->781K(9088K)” 含义“GC前该区域已使用容量->GC后已使用容量(该区域总容量)”

0.0094143 secs”表示该区域内GC用时,单位秒


-Dsun.awt.keepWorkingSetOnMinimize=true GUI程序最小化到任务栏时依旧保持以占有的内存。当你又一次回到程序,可以被高速显示,加快回复到原界面的速度。





posted on 2017-04-19 20:48  blfbuaa  阅读(110)  评论(0编辑  收藏  举报