我正在处理我的应用程序中的大型数组,需要调整它们的大小.
假设您有一个2Gb的数组,并且您希望将其调整为3Gb.有没有办法在不需要暂时5Gb的情况下调整大小?
例如,给定使用-Xmx1G标志的1Gb堆:
public class Biggy {
public static void main(String[] args) {
int[] array;
array = new int[100 * 1000 * 1000]; // needs 400Mb, works
array = null; // needed for GC
array = new int[150 * 1000 * 1000]; // needs 600Mb, works
array = null; // needed for GC
array = new int[100 * 1000 * 1000]; // needs 400Mb, works
array = Arrays.copyOf(array, 150 * 1000 * 1000); // needs 1000Mb, throws out of memory
}
}
那么,有没有办法调整数组大小而不需要额外的临时内存?