【问题标题】:What happens when -XMX argument tries to take most of the available primary memory?当 -XMX 参数试图占用大部分可用的主内存时会发生什么?
【发布时间】:2018-12-28 06:53:18
【问题描述】:

here我知道如果-Xmx参数超过了设备的可用内存那么我们会得到一个错误。

这很好,但我想了解如果我将 70% 的主内存分配给 JVM 并且程序刚刚达到 65% 并且现在机器无法为 JVM 分配更多内存,因为内存已被使用,会发生什么情况.会抛出OutOfMemoryError 吗?

【问题讨论】:

  • JVM 尝试预先分配大部分内存以避免这种情况,但它仍然可能发生。最好避免工作太接近内存的极限。例如添加适度的交换空间来阻止此类错误。
  • 但是当这种情况发生时它会抛出 OutOfMemoryException 吗?
  • 它在成功分配 Java Heap 后抛出 OOME,并且在 Full GC 后该堆已满。

标签: java out-of-memory


【解决方案1】:

我认为它会 OutOfMemoryError,因为 -xmx 128m 参数告诉 JVM 可以使用最大 128MB 内存用于堆,否则会抛出异常。

【讨论】:

  • 否则抛出异常?
猜你喜欢
  • 2014-04-15
  • 2013-04-11
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 2019-05-24
  • 2014-01-11
  • 2018-06-12
  • 2017-07-12
相关资源
最近更新 更多