JVM内存模型和关键参数设置

一. JVM内存模型:

Jvm内存模型是学好Java很重要的一部分,该部分学习能让我们在系统运维的时候,或者优化服务器的时候能够有方法,懂原理。




二. Jvm关键参数:


1. 堆大小设置参数:

-Xms -Xmx 这个参数是设置堆最大值与最小值。

在线上常常将这两个值设置成一样大,免去JVM调整堆大小影响性能,一般该值设置为服务器可用内存的的最大值80%。


-Xmn 这个参数是设置年轻代大小,SUN官方推荐该值配置为整个堆得3/8。


-XX:PermSize  这个参数是设置非堆内存的初始值, 默认是物理内存的1/64。

-XX:MaxPermSize 这个参数是设置最大的非堆内存,默认是物理内存的1/4。

如果程序中有比较大的文件导出时,一定要把这两个值设置上,否则可能会报内存溢出异常。

如果这个区有内存溢出的情况,大量使用反射有可能会引起该异常。

有一个比较好的解决方法:增加或增大:-XX:MaxPermSize=XXXM

增强版解决方法:-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled


-server 服务器模式,默认是-client模式,请务必作为第一个参数。


-XX:SurvivorRatio  这个参数是设置Eden和Survivor区的大小比例。


-Xss  这个参数是设置每个线程的栈大小,一般设置不易超过1M大小,否则容易报异常内存溢出。


-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/xmail/errorLog  这个参数是设置JVM崩溃的时候会打印出heap dump。


-XX:+AggressiveOpts  这个参数是设置JDK版本升级时,你的JVM都会使用最新加入的优化技术。


-Djava.awt.headless=true  这个参数是解决图表不兼容问题,一般放在最后设置。


 

posted @ 2016-09-06 22:34  dcz1001  阅读(238)  评论(0编辑  收藏  举报