2010-10-24 58 views
0

我已經在Java VM參數定義-Xmsx 1.3GB和我的Eclipse不允許比這更多,運行應用程序時,我得到了以下異常:在線程「應用程序終止上堆大小

異常線程3 「java.lang.OutOfMemoryError:Java堆空間

我該怎麼辦?

回答

1

您可以使用-mx1300m等來設置日蝕使用的最大內存量。這個限制是因爲你在Windows上運行32位的java。在64位操作系統上,你不會有這個問題。

但是,它的最大內存大小,你爲每個應用程序在eclipse中設置的重要。你在eclipse中的運行選項中設置了什麼?

+0

我沒有放任何參數,你建議用哪個參數來解決這個問題? – Tamir 2010-10-24 10:22:02

+0

用於運行應用程序的VM參數,而不是用於運行eclipse的VM參數。 – 2010-10-24 23:31:09

1

你的問題很清楚:

  • 你運行一個新的JVM的應用程序?
  • 您是否在子JVM的啓動器中設置了-Xmx/-Xms參數?

如果對這兩個問題中的任何一個的答案都是「否」,那麼就試試......兩者。 (尤其是,如果您未爲子JVM設置至少-Xmx,則會得到默認堆大小,這相對較小。)

如果這兩個問題的答案都是「是」,那麼問題是,你正在運行到您的硬件和/或操作系統配置的界限:

  • 在一個典型的32位的Windows,一個用戶進程只能尋址虛擬存儲器的總2個** 31字節,其中一些將被JVM二進制文件,本地庫和各種非堆內存分配所使用。 (在32位Linux上,我相信你可以達到2**31 + 2**30)。這個「修復」是使用64位操作系統和64位JVM。

  • 此外,JVM對OS可以通過虛擬內存子系統的資源請求的內存量有限制。這通常以可用RAM和用於分頁的光盤文件/分區的大小之和爲界。 「修復」是爲了增加分頁文件/分區的大小。增加更多內存也可能是一個好主意。