【发布时间】:2018-12-28 06:53:18
【问题描述】:
从here我知道如果-Xmx参数超过了设备的可用内存那么我们会得到一个错误。
这很好,但我想了解如果我将 70% 的主内存分配给 JVM 并且程序刚刚达到 65% 并且现在机器无法为 JVM 分配更多内存,因为内存已被使用,会发生什么情况.会抛出OutOfMemoryError 吗?
【问题讨论】:
-
JVM 尝试预先分配大部分内存以避免这种情况,但它仍然可能发生。最好避免工作太接近内存的极限。例如添加适度的交换空间来阻止此类错误。
-
但是当这种情况发生时它会抛出 OutOfMemoryException 吗?
-
它在成功分配 Java Heap 后抛出 OOME,并且在 Full GC 后该堆已满。
标签: java out-of-memory