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

 时间:2026-02-15 05:34:06

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″

  • VisualStudio如何设置解决方案的名称
  • 如何使用TOAD查看视图数据
  • SAP中Summary storage inventory总计库存查询
  • 如何使用eclipse的debug模式
  • 怎么使用bat批处理查看指定后缀名类型的文件
  • 热门搜索
    德国旅游地图 成都到西双版纳旅游 伊朗旅游 王莽岭旅游攻略 黄浦江旅游 阿里旅游网 七台河旅游 桂林旅游网站 北漂旅游网 联联旅游