在 Java 中调整数组大小会引发 OutOfMemoryError

Resizing array in Java throws OutOfMemoryError

我在 Java 中写了一个调整数组大小的方法:

public HUD resize(float factor){
    int[] array = new int[(int)Math.pow(pixels.length * factor, 2)];//Create new array
    for(int y = 0; y < height; ++y){
        for(int x = 0; x < width; ++x){
            array[(int)((x * 2) + (y * 2) * width * factor)] = pixels[x + y * width];
            array[(int)((x * 2 + 1) + (y * 2) * width * factor)] = pixels[x + y * width];
            array[(int)((x * 2) + (y * 2 + 1) * width * factor)] = pixels[x + y * width];
            array[(int)((x * 2 + 1) + (y * 2 + 1) * width * factor)] = pixels[x + y * width];
        }
    }
    pixels = array;
    width = (int)(width * factor);
    height = (int)(height * factor);
    return this;
}

此方法只调用一次,每次调用时都会发出 OutOfMemoryError

增加应用程序的堆大小可能会阻止 OutOfMemoryErrorThis post on SO 说明如何执行此操作。