2012-08-03 104 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