Jep*_*hir 3 java memory graphics image
我正在制作一个使用Slick库加载图像的 Java 应用程序。但是,在某些计算机上,尝试运行该程序时出现此错误:
Exception in thread "main" java.lang.OutOfMemoryError
at sun.misc.Unsafe.allocateMemory(Native Method)
at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:99)
at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:288)
at org.lwjgl.BufferUtils.createByteBuffer(BufferUtils.java:60)
at org.newdawn.slick.opengl.PNGImageData.loadImage(PNGImageData.java:692)
at org.newdawn.slick.opengl.CompositeImageData.loadImage(CompositeImageData.java:62)
at org.newdawn.slick.opengl.CompositeImageData.loadImage(CompositeImageData.java:43)
Run Code Online (Sandbox Code Playgroud)
我的虚拟机选项是:
-Djava.library.path=lib -Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxPermSize=256M
该程序在开始时加载了一些大图像(1024 x 768 分辨率)。
任何解决此问题的帮助将不胜感激。
在OutOfMemoryError简单地说明JVM已经耗尽内存。堆栈跟踪的第一行是不是真的与此有关,因为它只是“巧合”正好出现在那里JVM开始的内存用完了,所有的垃圾白白收集。
对此,基本上有两种解决方案:
byte[]的时间过长等等)。第 1 点很容易做到,但如果代码中明显存在内存泄漏,则并非总是解决方案。第 2 点最好在Java 分析器的帮助下确定下来。