论坛首页 Java企业应用论坛

java虚拟机调优常识

浏览 2582 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-08-31   最后修改:2009-08-31

 

jvm的调整没什么技巧,只有一些原则,要根据自己应用的特点来设定调优的目标,这里收集了一些内容,权当记录

 

Java heap (Xmx, Xms) 和java进程的heap是两回事情

java进程的heap包含:

   Java Heap

   Permanent Generation

   Thread stacks

   Native code

   Directly allocated memory

   Code generation

   Garbage collection

   TCP buffers


因此我们在设置,jvm参数的时候得小心一点,一般我们会设置java heap 和 perm gen,结合操作系统内存的大小和应用特点,选取一个合理的值。

-Xms/-Xmx
java heap并不是越大越好,对他的一般优化原则是够用的情况下,尽可能的小,因为太大的话会浪费内存,同时影响GC的效率

-XX:NewSize/-XX:NewRatio
一般设置为java heap的25%-33%,太大或者太小都会影响GC,要根据应用的特点,对象生命长短周期的比例来调整

GC相关调整的目标:
* 短生命周期的对象不要进入Old区
* 短生命周期的对象在minor GC的时候干掉
* 长生命周期的对象要放到Old区
* 长生命周期的对象可以被Full GC清理掉,但是Full GC要调整到尽量少发生

不管采用什么算法,GC总是会导致应用暂停的,这个时间长短从毫秒到秒之间不等,因此会影响应用的相应时间,多长的停顿在接受范围内取决于应用的特征,可以通过设置GC停顿的时间来调整(注意只是期望的时间,而不是绝对)
-XX:MaxGCPauseMillis -XX:MaxGCMinorPauseMillis  ,一般设置比较短的停顿时间会导致相对较频繁的GC,根据应用的情况来调整

更多的jvm参数请见:A Collection of JVM Options 

 

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics