可能是重复问题: 为什么(Sun)JVM有一个固定的最大内存使用限制(-Xmx)? JVM应该像任何其他进程一样,而在正常的进程中,我们不指定可用于它的最大内存,而是受32位操作系统等的限制,例如4GB。 那么为什么在JVM中它并不像那样简单,而是JVM可以根据需要将该最大内存用于堆内存和本机内存。 只是猜测,如果JVM事先知道可用于其的最大堆内存,是否会使事情更加高效?它是如何工作的?