我正在運行內存密集型應用程序。關於環境的一些信息:JVM將不會使用盡可能多的內存,因爲我告訴它
- 64位的debian
- 13的RAM GB
- 64位JVM(I輸出System.getProperty( 「sun.arch.data.model」)我的程序運行時,它說, 「64」)
這裏是我發出的確切命令:
的java -Xmx9000m -jar 「ale.jar」 testconfig
我已經在其他幾個系統上使用相同的確切數據,配置等來運行該程序,並且我知道JVM在這些系統上使用(在其最高處)6 GB的內存。但是,我收到OutOfMemory錯誤。此外,在程序執行過程中,系統永遠不會低於8.5 GB的可用內存。
當我在執行期間輸出調用Runtime.getRuntime()。maxMemory()時,得到的值3044540416,即〜3 GB。
我不知道它是否是相關的,但是這是一個谷歌Compute Engine的實例。
我能想到的唯一解釋是,有可能是某種制度約束的對單個進程可以使用的最大內存量。
嘗試的Java -Xms9g -Xmx9g -jar [...],這爲我工作。 – kaetzacoatl
你正在收到什麼完整的異常消息?什麼是堆棧跟蹤? –
使用'-XX:+ PrintGCDetails'來查找實際的堆佈局。 – apangin