您的位置:首页 > 其它

建议137:调整JVM参数以提升性能

2018-01-23 11:07 447 查看
(2)调整堆内存中各分区的比例

JVM的堆内存包括三部分:新生区(Young Generation Space)、养老区(Tenure generation space)、永久存储区(Permanet Space),其中新生成的对象都在新生区,它又分为

伊甸区(Eden Space)、幸存0区(Survivor 0 Space)和幸存1区(Suvivor 1Space),当再程序中使用了new关键字时,首先在伊甸区生产该对象,如果伊甸区满了,则用垃圾回收器

先进行回收,然后把剩余的对象移动到幸存区(0区或1区),如果幸存区也满了呢?垃圾回收器会再回收一次,然后再把剩余的对象移动到养老区,那要是养老区也满了呢?此时

就会触发Full GC(这是一个非常危险的动作,JVM会停止所有的执行,所有系统资源都会让位给垃圾回收器),会对所有的对象过滤一遍,检查是否有可以回收的对象,如果还是没有的话,就抛出OutOfMemoryError错误,系统不干了!

  清楚了这个原则(若还是不清楚,请看看<JVM sPECIFICATION>),那我们就可以思考一下如何提升性能了:扩大新生区,势必会减少养老区,这就可能产生不稳定的情况,一般情况下,新生区和养老区的比例为1:3左右,设置命令如下:

java -XX:NewSize = 32m  -XX:MaxNewSize =640m  -XX:MaxPermSIze = 1280m -XX:NewRation = 5

该配置指定新生代初始化为32MB(也就是新生区最小内存为32M),最大不超过640M,养老区最大不超过1280MB,新生区和养老区的比例为1:5.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: