其他分享
首页 > 其他分享> > Xmn、Xms、Xmx、Xss有什么区别以及异常

Xmn、Xms、Xmx、Xss有什么区别以及异常

作者:互联网

  • -Xms 堆内存的初始大小,默认为物理内存的1/64。 -Xmx 堆内存的最大大小,默认为物理内存的1/4~1/2。 -Xmn 堆内新生代的大小。通过这个值也可以得到老生代的大小:-Xmx减去-Xmn。

-Xss 设置每个线程可使用的内存大小,即栈的大小。

在相同物理内存下,减小这个值能生成更多的线程,当然操作系统对一个进程内的线程数还是有限制的,不能无限生成。线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时出现溢出的可能性更大,如果该值设置过大,就有影响到创建栈的数量,如果是多线程的应用,就会出现内存溢出的错误。

常规做法: Xms=Xmx=物理内存的1/2。 Xmn=1/2Xmx

举个栗子

APP_START_JVM_OPTION:::-Djsse.enableSNIExtension=false -Xmx2G -Xms2G
-Xmn1G -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Dspring.config.location=classpath:application.properties,classpath:client.properties,classpath:client.properties
-D.log.config-location=classpath:application.properties -D.log.reload-scan-mills=40000 -D.log.enabled=true -D.server.web-environment=true -Duser.language=zh

异常:
如上参数设置不当,会导致fullgc频繁。

fullgc频繁的表现:CPU飙高、内存异常。也可能存在内存泄漏out of Memory。

标签:Xss,Xmn,classpath,线程,内存,Xmx,properties
来源: https://blog.csdn.net/weixin_39444878/article/details/120128855