操作系统内存不足时的JVM行为

时间:2018-07-12 03:57:26

标签: jvm

我想知道以下情况下的JVM行为是什么:

  • JVM最小堆大小= 500MB
  • JVM最大堆大小= 2GB
  • 操作系统具有1GB内存

JVM启动后,程序运行了一段时间,它使用了超过1GB的内存。我想知道OOM是立即发生还是先尝试GC!

1 个答案:

答案 0 :(得分:0)

这取决于您有多少交换空间。

如果您没有足够的可用交换空间,则JVM将无法启动,因为它无法分配足够的虚拟内存。

如果您有足够的免费交换空间,则程序可以启动和运行。但是,一旦JVM开始交换其堆,GC时间就会急剧增加。 GC假定它可以随机访问堆。

如果您的堆无法容纳在主内存中,则该程序甚至可能无法使用该计算机。以我的经验,在Windows上,此时需要重新启动。在Linux上,我通常可以杀死进程。

简而言之,您也许可以启动JVM,但这不是一个好主意。