2016-03-03 50 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