我已經在Java VM參數定義-Xmsx 1.3GB和我的Eclipse不允許比這更多,運行應用程序時,我得到了以下異常:在線程「應用程序終止上堆大小
異常線程3 「java.lang.OutOfMemoryError:Java堆空間
我該怎麼辦?
我已經在Java VM參數定義-Xmsx 1.3GB和我的Eclipse不允許比這更多,運行應用程序時,我得到了以下異常:在線程「應用程序終止上堆大小
異常線程3 「java.lang.OutOfMemoryError:Java堆空間
我該怎麼辦?
您可以使用-mx1300m等來設置日蝕使用的最大內存量。這個限制是因爲你在Windows上運行32位的java。在64位操作系統上,你不會有這個問題。
但是,它的最大內存大小,你爲每個應用程序在eclipse中設置的重要。你在eclipse中的運行選項中設置了什麼?
你可能想看看積極的堆選項http://java.sun.com/docs/hotspot/gc1.4.2/#4.2.2.%20AggressiveHeap|outline 它解決了我的一個類似的問題。
正如OP所做的那樣,當從最大化的Eclipse(即使用-Xmx1300m)啓動應用程序時,我不會這麼做。您有責任將機器推入VM抖動。 – 2010-10-24 10:57:33
你的問題很清楚:
如果對這兩個問題中的任何一個的答案都是「否」,那麼就試試......兩者。 (尤其是,如果您未爲子JVM設置至少-Xmx,則會得到默認堆大小,這相對較小。)
如果這兩個問題的答案都是「是」,那麼問題是,你正在運行到您的硬件和/或操作系統配置的界限:
在一個典型的32位的Windows,一個用戶進程只能尋址虛擬存儲器的總2個** 31字節,其中一些將被JVM二進制文件,本地庫和各種非堆內存分配所使用。 (在32位Linux上,我相信你可以達到2**31 + 2**30
)。這個「修復」是使用64位操作系統和64位JVM。
此外,JVM對OS可以通過虛擬內存子系統的資源請求的內存量有限制。這通常以可用RAM和用於分頁的光盤文件/分區的大小之和爲界。 「修復」是爲了增加分頁文件/分區的大小。增加更多內存也可能是一個好主意。
我沒有放任何參數,你建議用哪個參數來解決這個問題? – Tamir 2010-10-24 10:22:02
用於運行應用程序的VM參數,而不是用於運行eclipse的VM參數。 – 2010-10-24 23:31:09