为什么只在java API get heap init值为0时才设置Xmx值?
当我设置Xmx值时,通过Java API发现heap init值为0, 我设置了Xms和Xmx值,通过Java API发现heap init值不是0, 我没有设置Xms和Xmx值,我通过javaapi发现heap init值不是0为什么只在java API get heap init值为0时才设置Xmx值?,java,Java,当我设置Xmx值时,通过Java API发现heap init值为0, 我设置了Xms和Xmx值,通过Java API发现heap init值不是0, 我没有设置Xms和Xmx值,我通过javaapi发现heap init值不是0 -Xmx512M -Xms256M-Xmx512M 未设定 我发现JDK1.5会有这个问题。 MemoryUsage-heapMemoryUsage=ManagementFactory.getMemoryMXBean().getHeapMemoryUsage(); h
我想知道我尽力解释的原理:
-Xms
允许您设置最小堆大小。这就是JVM的起点。由于您的进程需要更多内存,它会从操作系统请求内存-Xmx
用于设置最大堆大小;如果进程超过了为-Xmx
设置的值,它将抛出java.lang.OutOfMemoryError
也许,这就是你所需要的:?你的问题很难理解。英语很差,但这是可以接受的,不过假设我读对了,这个问题似乎不明显。从我收集的关于这个问题的信息来看,您通过“Xmx”(最大堆大小)设置的值是“0”,@personal-您可以将您的命令行参数粘贴到这里吗?“最大堆大小,并扩展为最大内存”只是一个建议,因为您提到了内存。如果您愿意,我将删除此评论。我将把您的评论留给后人:Java中的内存是堆和堆栈,并且
-Xmx
不限制堆栈。您是否可以发布一(两)个关于该语句的链接?我不是说你撒谎,但我很好奇,因为我可以发誓Xms/Xmx与堆/堆栈深度相关,而不是与内存直接相关。我真的很喜欢阅读这个tbh,你知道的越多。非常感谢你回答我的问题,我重新讲述了这个问题。你能理解吗?你现在回答的不是我说的want@Immortal,我个人认为这可能与豆子有关。我承认这完全有可能是一个不正确的说法,尽管我不能肯定。但是,此时,我建议您尝试使用Runtime.getRuntime()
中的函数来计算可用/已用/总内存值,看看结果是否相同。我使用Java版本8/9,我从未使用过1.5,即使在linux上,1.6也是我记得使用过的最早版本。