Tho*_*Liu 1 java garbage-collection jvm
最近,在运行我们的应用程序时,我们遇到了内存不足异常.
这是异常发生之前的堆转储
Heap
def new generation total 1572864K, used 366283K [0x00000006b0000000, 0x000000071aaa0000, 0x000000071aaa0000)
eden space 1398144K, 13% used [0x00000006b0000000, 0x00000006bbb12d40, 0x0000000705560000)
from space 174720K, 100% used [0x0000000710000000, 0x000000071aaa0000, 0x000000071aaa0000)
to space 174720K, 0% used [0x0000000705560000, 0x0000000705560000, 0x0000000710000000)
tenured generation total 3495296K, used 2658714K [0x000000071aaa0000, 0x00000007f0000000, 0x00000007f0000000)
the space 3495296K, 76% used [0x000000071aaa0000, 0x00000007bcf06ba8, 0x00000007bcf06c00, 0x00000007f0000000)
compacting perm gen total 42048K, used 41778K [0x00000007f0000000, 0x00000007f2910000, 0x0000000800000000)
the space 42048K, 99% used [0x00000007f0000000, 0x00000007f28ccb80, 0x00000007f28ccc00, 0x00000007f2910000)
No shared spaces configured.
Run Code Online (Sandbox Code Playgroud)
看起来老几乎已经满了(76%).我假设当它最终达到100%OOM发生时.然而,看起来伊甸园只有13%.
有人可以解释为什么OOM会发生,即使年轻人还有一些空间吗?
JVM可能会抛出十几个不同的原因OutOfMemoryError,包括
GCTimeLimit,GCHeapFreeLimit);MaxPermSize或者MaxMetaspaceSize;Integer.MAX_VALUE - 2;ulimit -u)或没有足够的虚拟内存来为线程堆栈保留空间时;MaxDirectMemorySize或者没有可用的虚拟内存来满足直接缓冲区分配时;OutOfMemoryError自己,因为开发人员决定如此.要找出出现特定错误的原因,您至少应该查看错误消息,堆栈跟踪和GC日志.
| 归档时间: |
|
| 查看次数: |
1761 次 |
| 最近记录: |