如果我使用Slick-Util将纹理加载到LWJGL中,它会使用大量的RAM。这是一个控制台输出的例子:
Message.info ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1000000 + "MB");
TextureManager.loadTexture("gui.wallpaper", "resources/wallpaper.jpg");
Message.info ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1000000 + "MB");
“TextureManager.loadTexture(...)”方法如下:
String textureFileFormat;
if (thePath.contains("png")) {
textureFileFormat = "PNG";
} else if (thePath.contains("jpg")) {
textureFileFormat = "JPG";
} else if (thePath.contains("jpeg")) {
textureFileFormat = "JPG";
} else {
textureFileFormat = "PNG";
}
theTexture = TextureLoader.getTexture(textureFileFormat, new FileInputStream(thePath), true);
// === Store it onto the HashTable === //
textures.put(theName, theTexture);
这使用(如在控制台输出中可见)退出80 MB。为什么? “wallpaper.jpg”只有290KB大小!
有什么问题?
这是控制台输出:
2013-09-24 21:32:40 [INFO] [CLIENT] 4MB
Tue Sep 24 21:32:40 CEST 2013 INFO:Use Java PNG Loader = true
2013-09-24 21:32:41 [INFO] [CLIENT] 89MB
我希望,你们中的某些人知道解决方案。