我的JVM的最大堆大小设置为2GB。由于内存不足,它当前运行缓慢,但不会分配超过1841MB的空间(即使此操作之前已这样做)。我有超过16GB的可用内存。
为什么这突然发生在正在运行的JVM中?可能是因为它被“压入”了-它无法获得更大范围的物理内存连续吗?
这适用于Windows 10上的Java 1.8.0_73(64位),但是我时常在其他Java版本以及Windows 7和XP上看到这一点。
请您参考如下方法:
32位JVM通常很难使用超过1800Mb的内存。他们究竟可以分配多少取决于您的操作系统以及它如何布置32位地址空间(在运行之间可能会有所不同)。
使用64位JVM获得更多信息。