`

jvm参数配置

    博客分类:
  • jvm
jvm 
阅读更多
JVM参数说明与配置

参数名与参数说明
-server 启用能够执行优化的编译器, 显著提高服务器的性能,但使用能够执行 优化的编译器时,服务器的预备时间将会较长。生产环境的服务器强烈推荐设置 此参数。

-Xss 单个线程堆栈大小值;JDK5.0 以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在 3000~5000 左右。

-XX:+UseParNewGC 用来设置年轻代为并发收集【多CPU】,如果你的服务器 有多个CPU,你可以开启此参数;开启此参数,多个CPU 可并发进行垃圾回收,可提高垃圾回收的速度。此参数和+UseParallelGC,-XX:ParallelGCThreads 搭配使用。

+UseParallelGC 选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集。可提高系统的吞吐量。

-XX:ParallelGCThreads :年轻代并行垃圾收集的前提下(对并发也有效果)的线程数,增加并行度,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。


永久存储区相关参数:
参数名参数说明
-Xnoclassgc 每次永久存储区满了后一般GC 算法在做扩展分配内存前都会触发一次FULL GC,除非设置了-Xnoclassgc。

-XX:PermSize 应用服务器启动时,永久存储区的初始内存大小。

-XX:MaxPermSize 应用运行中,永久存储区的极限值。为了不消耗扩大JVM 永久存储区分配的开销,将此参数和-XX:PermSize 这个两个值设为相等。


堆空间相关参数
参数名参数说明
-Xms 启动应用时,JVM 堆空间的初始大小值。

-Xmx 应用运行中,JVM 堆空间的极限值。为了不消耗扩大JVM 堆控件分配的开销,将此参数和-Xms 这个两个值设为相等,考虑到需要开线程,讲此值设置为总内存的80%。

-Xmn 此参数硬性规定堆空间的新生代空间大小,推荐设为堆空间大小的1/4。

上面所列的JVM 参数关系到系统的性能,而其中-XX:PermSize,-XX:MaxPermSize,
-Xms,-Xmx 和-Xmn 这5 个参数更是直接关系到系统的性能, 系统是否会出现内存溢出。
-XX:PermSize 和-XX:MaxPermSize 分别设置应用服务器启动时,永久存储区的初始大小和极限大小;在生成环境中强烈推荐将这个两个值设置为相同的值,以避免分配永久存储区的开销,具体的值可取系统“疲劳测试”获取到的永久存储区的极限值;如果不进行设置
-XX:MaxPermSize 默认值为64M,一般来说系统的类定义文件大小都会超过这个默认值。
-Xms 和-Xmx 分别是服务器启动时,堆空间的初始大小和极限值。-Xms 的默认值是物理内存的1/64 但小于1G,-Xmx 的默认值是物理内存的1/4 但小于1G.在生产环境中这些默认值是肯定不能满足我们的需要的。也就是你的服务器有8g 的内存,不对JVM 参数进行设置优化,应用服务器启动时还是按默认值来分配和约束JVM 对内存资源的使用,不会充分的利用所有的内存资源。

   到此我们就不难理解上文提到的“我的服务器有8g 内存,系统也就100M 左右,居然出现内存溢出”这个“怪现象”了。在上文我曾提到“永久存储区溢(java.lang.OutOfMemoryError: Java Permanent Space)”和“JVM 堆空间溢出(java.lang.OutOfMemoryError: Java heap space)”这两种溢出错误。现在大家都知道答案了:“永久存储区溢出(java.lang.OutOfMemoryError: Java Permanent Space)”乃是永久存储区设置太小,不能满足系统需要的大小,此时只需要调整-XX:PermSize 和-XX:MaxPermSize 这两个参数即可。“JVM 堆空间溢出(java.lang.OutOfMemoryError: Java heap space)”错误是JVM 堆空间 不足,此时只需要调整-Xms 和-Xmx 这两个参数即可。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics