浏览 2623 次
锁定老帖子 主题:java虚拟机调优常识
精华帖 (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
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |