我正在尝试运行一个草图,该草图应该在封面流动画中显示图像(png,大小在 100kb 和 1.5mb 之间,总共 55.4mb)。它适用于大约 10 张图像,但使用更多我会出现内存不足错误。我正在将图像文件名加载到一个字符串数组中,如下所示:
String[] names = {"00.jpg", "01.jpg", "02.jpg"};
然后他们像这样被加载到草图中:
covers = new Cover[names.length];
for (int i = 0; i < covers.length; i++ ) {
covers[i] = new Cover(names[i]);
}
initCovers();
涵盖类:
class Cover {
PImage img;
Cover( String name ) {
img = loadImage(name);
public void drawCover() {
beginShape();
textureMode(NORMALIZED);
texture(img);
vertex(-300, -300, 0, 0, 0);
vertex( 300, -300, 0, 1, 0);
vertex( 300, 300, 0, 1, 1);
vertex(-300, 300, 0, 0, 1);
endShape();
当我运行草图时,我的内存(8gb)在几秒钟内就被填满了,草图甚至没有加载,它只是崩溃了。当我用大约 10 张图像开始草图时,一切正常(大约 1.5gb 的 ram 使用量)。
我的问题是:为什么它使用这么多内存?正常吗?有没有办法让它运行时内存效率更高(例如,释放当前未显示的图像内存,因为我们一次只能在屏幕上看到大约 3 个图像)。
编辑:我认为问题在于在封面类中,每次调用它都会创建一个新的 PImage 。这可能吗?
内存中的图像大小:宽度 * 高度 *(颜色深度/8),所以对于我的图像(1575y1969,24 位)来说,这将是 8.9mb。乘以 91 图像:仅用于图像的内存使用量约为 807mb。