2012-08-03 36 views
3

我有一个在浏览器上运行的应用程序(如果它很重要)在尚未激活的窗口上(如果有的话)。我已经将JVM控制面板中的环境变量设置为-Xms5m -Xmx5m(我也完成了-Xms16m和-Xmx16m)。JVM选项-Xms和-Xmx被忽略

当我运行应用程序并使用jconsole监视进程的pid时,它告诉我我使用的显着多于我的set堆,而不是抛出堆空间错误(我特意试图获取此错误)。根据jconsole它使用15-20Mb。我重新启动了电脑,并且已将所有浏览器设置为关闭。

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

让我知道是否有任何信息丢失。

只是说明一下,jconsole特意说我的堆内存使用情况是20mb。我很清楚,由于加载了JVM,库,堆栈等,可能会使用更多的内存。我遇到的问题是堆应该超过我指定的堆大小。

-Xmx16m选项没有在Java VisualVm中列出,即使它是在环境变量中设置的唯一选项(我甚至删除了-Xms16m以确保Java VisualVm正在更新。即使-Xmx16m没有)。有谁知道为什么这可能是这种情况?

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

+0

您是如何传递这些值的? – 2012-08-03 18:28:55

+0

我通过打开控制面板,搜索java并选择它,然后转到java选项卡并单击查看按钮,最后设置运行时参数(然后确定,应用,关闭浏览器,重新启动计算机等)来传递值。 。 – 2012-08-03 18:34:17

+0

http://stackoverflow.com/questions/6450132/java-seems-to-ignore-xms-and-xmx-options – kgautron 2012-08-03 18:41:52

回答

2

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

+0

我正在使用jconsole检查堆内存使用情况,jconsole可能会给我一个错误的阅读,但我正在使用的应用程序仿真终端告诉我相同的信息。你会推荐哪些其他工具来检查堆内存使用情况? – 2012-08-03 18:51:33

+2

我不认为你的愤怒是适当的。他使用JConsole来确定堆的大小。 JConsole应该是准确的,这表明传递JVM配置参数确实存在问题。 – Confusion 2012-08-03 18:52:30