为什么会堆内存溢出

2019-05-13  本文已影响0人  Lisong

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

OOM 异常常见的原因

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"
上一篇下一篇

猜你喜欢

热点阅读