1.1【堆内存溢出】概述:
Java 应用只允许使用有限的内存。这个限制是在应用启动的时候指定的。展开来说, Java 内存分成 2 个不同的区域。这两个区域叫做 Heap Space (堆内存)和 Permgen (Permanent Generation,即永久代)。
这两个区的大小是在 JVM 启动的时候设置, 可以通过 JVM 参数 -Xmx
和 -XX:MaxPermSize
进行设置. 如果你没有进行特别的设置, 平台指定 的默认配置会被使用.
java.lang.OutOfMemoryError: Java heap space
错误会在应用尝试添加更多的数据到 heap space, 但是 heap 区没有足够的空间时触发.
需要注意的是即使 物理内存 可能有很多剩余, 但是只要 JVM 达到了 heap size 的限制, 就会抛出该错误.
1.2 原因
对于 java.lang.OutOfMemoryError: Java heap space
, 最常见的原因很简单 – 你把一个 XXL 号的应用放到了一个 S 号的 Java heap space 里了. 也就是说 – 应用需要更多的 Java