2015-03-02 52 views
0

使用PersistenceManager.loadObjectFromFile從光盤加載.gapp文件時,我得到了「線程中的異常」主「java.lang.OutOfMemoryError:Java heap space」錯誤。 我將堆大小增加到了最大值2048M,並解決了問題。 加載一大組.gapp文件時是否有更好的替代方法來解決此問題。GATE PersistenceManager.loadObjectFromFile加載.gapp文件時outofmemory錯誤

+0

閱讀「文件」我懷疑你是在同一個java應用程序中加載多個gapps - 這是很少需要的。 dedek的建議很好,但我也建議您檢查一下您的架構並將其解耦,以便爲每個gapp有不同的java應用程序。 – Yasen 2015-03-03 16:55:51

回答

0

我想不是,如果你使用默認的垃圾收集器。它需要最大堆大小參數的工作。請注意,內存真的很需要。該錯誤說明您的門應用程序沒有足夠的內存(加載的gapp文件)。

有兩件事情可以做:

  1. 查找最大堆大小參數的較低值仍正常工作。

  2. 減少所需的內存量。例如通過在門應用程序之間共享一些大對象(例如,地名詞典列表)。它可以使用Factory.duplicate(Resource)完成。見例如幻燈片從Developers GATE Course

+0

我並不完全同意1.通常,gate會爲每個文檔創建很多註釋,儘管您可能會「釋放」文檔,但是具有一定邊界的堆大小會導致GC更頻繁地運行。更不用說,如果你設置的堆大小足夠讓gapp加載,大文檔會導致「內存不足」錯誤。 – Yasen 2015-03-03 16:50:40