我通过将最大内存指定为128MB来启动程序
java -Xmx128M ...
然后我用jconsole连接到jvm实例。在“VM Summary”选项卡中,我发现:
Maximum heap size: 127,808 kbytes
此值小于我在命令行中指定的值。任何人都可以给我一些提示吗?
答案 0 :(得分:2)
我检查了Java Visual VM报告的值。这正是我配置为JVM参数:
示例强>
JVM argument: 1024m
Heap Max: 1.073.741.824 B
所以我猜jconsole有一种特殊的计算方式,或者Java Visual VM将值调整为配置的JVM参数 - 谁知道?
答案 1 :(得分:1)
我发现确切的内存大小要小一些。根据Java和OS的版本,有多小的apepar会有所不同。我怀疑有一些实施原因,为什么它不正是你所要求的。
BTW:这只是堆大小的最大值。还有许多其他存储区域,例如线程堆栈,直接内存,perm gen,共享库,本机资源和内存映射文件,这些文件都没有包含在内,所以我不会太过分了,因为这个值和应用程序的最大内存之间存在很大的误差。将使用。
BTW2:这些天最大128米相当小。它有这么小的理由吗?
答案 2 :(得分:0)
引用以下Java bug report:
不是错误。 -Xmx标志的解释取决于VM。一些 VM(包括HotSpot)强制实施有效值的下限 这个选项。 CCC提案不应该提到-Xmx 以这种方式举旗。