建议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.
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.
相关文章推荐
- paip.提升性能----jvm参数调整.txt
- paip.提升性能----jvm参数调整.txt
- 调整JVM参数提升性能
- paip.提升性能---mysql 性能 测试以及 参数调整.txt
- paip.提升性能---mysql 性能 测试以及 参数调整.txt
- 通过调整Linux内核参数提升网络性能
- 通过调整Linux内核参数提升网络性能
- jinfo_动态调整JVM参数(无需重启)(实践)
- linux环境mule JVM短生命周期对象性能调整
- Odoo环境下Ubuntu服务器性能优化--参数调整
- 10 条提升 Android 性能的建议
- IOS开发-提升app性能的25条建议和技巧
- Spark性能调优-性能监控、参数调整
- 优化JVM参数提升Eclipse运行速度
- IOS开发-提升app性能的25条建议和技巧
- JVM堆大小调整参数及建议
- websphere参数配置,性能调整
- [编写高质量代码:改善java程序的151个建议]建议132 提升JAVA性能的基本方法
- 10 条提升 Android 性能的建议
- 调整Linux的网络栈(Buffer Size)来提升网络性能