Используя флаг -Xmx1G
, чтобы обеспечить кучу одного гигабайта, выполняется следующее:
public class Biggy {
public static void main(String[] args) {
int[] array = new int[150 * 1000 * 1000];
}
}
Массив должен представлять около 600 МБ.
Тем не менее, следующее выбрасывает OutOfMemoryError:
public class Biggy {
public static void main(String[] args) {
int[] array = new int[200 * 1000 * 1000];
}
}
Несмотря на то, что массив должен содержать около 800 МБ и поэтому легко вписывается в память.
Где пропала пропавшая память?