2016-03-03 88 views
0

我正在用Java寫一個3D應用程序。我正在加載每個包含大約65000個頂點的字段。這些字段可以翻譯,旋轉等。當一個字段滾動出來的時候,它被剔除,VBOs被清除,元素數組被存儲在內存緩衝區中。我緩衝這些領域的最多5個。不僅僅是他們開始申報。此內存異常來自哪裏?

當我點擊8個可見字段(520000)頂點時,程序崩潰,系統內存不足。我以爲我超負荷的GPU內存,但使用GPU鯊魚,我可以看到它只有約25%。我的系統有8GB的內存,並通過任務管理器查看內存使用情況,幾乎沒有註冊。它約佔51%。那麼,我將用盡什麼?

我使用Concurrent Hashmaps來存儲我的頂點數據。我沒有在不使用時明確銷燬/取消它們,但之前從未造成過任何問題。

我正在通過LWJGL使用OpenGL庫。

+0

我在猜測「內存不足」來自jvm。你的-Xmx設置是什麼?對於xmx請參閱http://stackoverflow.com/a/5374501/1737819 – Willmore

+0

有沒有辦法讓我增加隔離度? –

+0

@eric_the_animal檢查鏈接。 – shmosel

回答

2

如果您使用eclipse,請嘗試增加eclipse堆大小,然後再次嘗試。 JVM不允許你的整個RAM堆。

How to increase application heap size in Eclipse?

+0

是的,我剛看完Willmore的評論就完成了。像魅力一樣工作,現在我真的可以看到問題所在。有些領域是散開的(即使應該被剔除也會被渲染)。 –

+0

哈哈好運(y) – hackmith