美文网首页
为什么会堆内存溢出

为什么会堆内存溢出

作者: Lisong | 来源:发表于2019-05-13 17:24 被阅读0次

在年轻代中经过GC 后还存活的对象会被复制到老年代中。当老年代空间不足时,JVM会对老年代进行完全的垃圾回收(full GC)。如果GC后,还是无法存放从 Survivor去复制过来的对象,就会出现 OOM(Out of Memory)

OOM 异常常见的原因

  • 老年代内存不足
    java.lang.OutOfMemoryError:Javaheapspace

  • 永久代内存不足
    java.lang.OutOfMemoryError:PermGenspace

  • 代码BUG,占用内存无法及时回收

OOM在几个内存区都有可能出现,实际遇到OOM时,能根据异常信息定位到哪个区的内存溢出。可以通过添加参数 -XX:+HeapDumpOnOutMemoryError ,让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便事后分析

java启动调优配置

JAVA_OPTS="-server -Xms512m -Xmx2g -XX:+UseG1GC -XX:SurvivorRatio=6 -XX:MaxGCPauseMillis=400 -XX:G1ReservePercent=15 -XX:ParallelGCThreads=4 -XX:

ConcGCThreads=1 -XX:InitiatingHeapOccupancyPercent=40 -XX:+PrintGCDetails  -XX:+PrintGCTimeStamps -Xloggc:../logs/gc.log"

相关文章

  • 为什么会堆内存溢出

    在年轻代中经过GC 后还存活的对象会被复制到老年代中。当老年代空间不足时,JVM会对老年代进行完全的垃圾回收(fu...

  • 堆内存溢出

    堆内存溢出:堆内存溢出:java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环;下面演示的是利用循环的方...

  • 【笔记】深入理解 java 虚拟机---虚拟机内存溢出

    虚拟机的内存溢出有以下情况: 1 Java 堆内存溢出。 OutOfMemory。 2 栈内存溢出。StatckO...

  • 内存溢出的几种情况

    1、堆内存溢出(outOfMemoryError:java heap space) 2、方法区内存溢出(outOf...

  • Java内存溢出

    Java内存溢出 堆溢出 大量对象占据了堆空间,而且这些对象是强引用,导致无法回收 直接内存溢出 Java的NIO...

  • 栈内存溢出与堆内存溢出

    栈内存溢出: 原因:递归调用 hibernate中如果where条件过多则报此错误 堆内存溢出: java.lan...

  • JVM系列(二):深入讲解JVM内存溢出分析!

    JVM 内存溢出 1、堆内存溢出 堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots...

  • 对于OOM的理解

    OOM,即OutOfMemory,内存溢出 OOM之 Java heap spacejava堆内存溢出,一般由于内...

  • 溢出泄露

    内存溢出 oom 1、Java heap space :堆内存溢出弱引用:垃圾回收时,无论内存是否充足,都会回收被...

  • 面试题-第一期

    内存泄漏&&内存溢出 参考博客参考博客 先来看看内存泄漏,内存溢出,OOM,GC回收这几个概念。把App的堆内存空...

网友评论

      本文标题:为什么会堆内存溢出

      本文链接:https://www.haomeiwen.com/subject/ptyraqtx.html