0

我通过将最大内存指定为 128MB 来启动我的程序

java -Xmx128M ...

然后我用 jconsole 连接到 jvm 实例。在“VM Summary”选项卡中,我发现:

Maximum heap size: 127,808 kbytes

该值小于我在命令行中指定的值。任何人都可以给我一些提示吗?

4

3 回答 3

2

我检查了Java Visual VM报告的值。这正是我配置为 JVM 参数的内容:

例子

JVM argument: 1024m
Heap Max: 1.073.741.824 B

所以我猜 jconsole 有一种特殊的计算或 Java Visual VM 将值调整为配置的 JVM 参数 - 谁知道?

于 2012-04-10T09:23:19.727 回答
1

我发现确切的内存大小要小一些。根据 Java 和操作系统的版本,可以缩小多少。我怀疑有一些实施原因导致它不是您所要求的。

顺便说一句:这只是堆大小的最大值。还有许多其他内存区域,例如线程堆栈、直接内存、perm gen、共享库、本机资源和内存映射文件,它们不包括在内,所以我不会太担心,因为这之间有很大的误差范围值和应用程序将使用的最大内存。

BTW2:现在最大128m相当小。它这么小有充分的理由吗?

于 2012-04-10T08:12:20.667 回答
0

引用以下Java 错误报告

不是错误。-Xmx 标志的解释取决于 VM。包括 HotSpot 在内的一些 VM 会对该选项的有效值实施一个下限。CCC 提案不应该以这种方式提到 -Xmx 标志。

于 2013-01-22T07:22:40.123 回答