4

我有一个应用程序在尚未激活的窗口(如果重要)上的浏览器(如果重要,则为 IE)上运行。我已经将JVM控制面板中的环境变量设置为-Xms5m -Xmx5m(我也做了-Xms16m和-Xmx16m)。

当我运行应用程序并使用 jconsole 监视进程的 pid 时,它告诉我我使用的堆比我设置的堆要多得多,而不是抛出堆空间不足的错误(我正在尝试专门解决这个错误)。根据 jconsole,它使用 15-20Mb。我已重新启动计算机,并在关闭所有浏览器的情况下设置了此选项。

有谁知道为什么参数被忽略。

让我知道是否缺少任何信息。

请注意,jconsole 明确表示我的堆内存使用量为 20mb。我很清楚,由于 JVM、库、堆栈等的加载,可能会使用更多内存。我遇到的问题是堆超出了我指定的应该使用的堆大小。

-Xmx16m 选项未在 Java VisualVm 中列出,即使它是在环境变量中设置的唯一选项(我什至删除了 -Xms16m 以确保 Java VisualVm 正在更新。尽管 -Xmx16m 确实出现了 -Xms16m没有)。有谁知道为什么会这样?

我已经尝试过从 27 到 31 的 Java RE 版本 6,它们都缺少 Java VisualVm 选项中的 Xmx 选项,并且它们都只有 -Xms16m。

4

1 回答 1

3

正如已经多次回答的那样(我目前找不到链接),运行时参数仅控制允许您的程序堆中分配多少内存。JRE 本身使用更多内存来管理堆,因此-Xms-Xmx参数与程序使用的实际内存量没有很好的相关性(如果有的话)。

于 2012-08-03T18:45:36.200 回答