线程导致内存溢出怎么处理

时间:2024-10-25 10:57:09

1、Java堆用于储存对象实例。当需要为对象实例分配内存,而堆的内存占用又已经达到-Xmx设置的最大值。将会抛出OutOfMemoryError异常。运行时设置jvm参数,如下:

线程导致内存溢出怎么处理

2、所以Server容器启动的时候我们经常关心和设置JVM的几个参数如下:-Xms:java Heap初始大小, 默认是物理内存的1/64。-Xmx:java Heap最大值,不可超过物理内存。-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一 。增大年轻代后,将会减小年老代大小,可以根据监控合理设置。-Xss:每个线程的Stack大小,而最佳值应该是128K,默认值好像是512k。-XX:MetaspaceSize:设定内存的metaspace初始大小,缺省值为64M。-XX:MaxMetaspaceSize:设定内存的metaspace最大大小,最大值为64M。-XX:SurvivorRatio:Eden区与Survivor区的大小比值,设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10。Eden:S0:S1=8:1:1-XX:+UseParallelGC:年轻代使用并发收集,而年老代仍旧使用串行收集。-XX:+UseParNewGC:设置年轻代为并行收集,JDK5.0以上,JVM会根据系统配置自行设置,所无需再设置此值。-XX:ParallelGCThreads:并行收集器的线程数,值最好配置与处理器数目相等 同样适用于CMS。-XX:+UseParallelOldGC:年老代垃圾收集方式为并行收集(Parallel Compacting)。-XX:MaxGCPauseMillis:每次年轻代垃圾回收的最长时间(最大暂停时间),如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。-XX:+ScavengeBeforeFullGC:Full GC前调用YGC,默认是true。实例如:JAVA_OPTS=”-Xms4g -Xmx4g -Xmn1024m XX:MetaspaceSize=320M -XX:MaxMetaspaceSize=320m -XX:SurvivorRatio=6″

© 手抄报圈