2011-08-10 75 views
0

我一直在eclipse和intellij上os x上查看JVM堆大小,並直接通過命令行運行應用程序,我看到一個奇怪的行爲,我希望有人能解釋。java os x堆大小問題

  1. 如果我設置JVM堆大小爲食的東西大(例如超過1GB),然後運行執行

    的System.out.println(調用Runtime.getRuntime()Hello World應用程序。maxMemory ());

我看到它有129957888(128mb)作爲最大內存。

  1. 如果我運行的IntelliJ相同的實驗,我得到了相同的結果,但在右下角的堆大小指示說:我只使用了100MB 2GB,我可以的。

  2. 如果我只是運行java測試-Xmx1024mb,那麼它告訴我,我有適量的最大內存。 (高達8倍)

我已經在10.6和10.7嘗試這樣做,我看到了同樣的事情,所以我不知道是怎麼回事與IDE不是需要消耗大量的堆大小爲我希望他們。當我在我的機器上坐着沒有使用過的內存時,我得到了一堆空間錯誤,我發現這很荒謬。

感謝任何人都可以提供的幫助。

回答

1

聽起來您正在爲IDE的JVM設置堆大小,而不是IDE啓動運行程序的JVM。如果一個IDE在運行它的同一個JVM中運行代碼會很危險。

在Eclipse中,運行程序時使用的默認堆大小爲128 MB。您可以使用運行或調試配置來覆蓋它。

  1. Java類右鍵點擊你想要運行
  2. 選擇運行方式的主要方法 - >運行配置...
  3. 單擊參數選項卡
  4. 在VM參數部分上,進入-Xmx256m
  5. 單擊運行

以上設置設置用於由JVM 256 MB的最大堆大小。

測試類的輸出現在應該是265093120.