2015-11-11 3 views
-1

Например, объявление new int[n][n] в java приведет к n ссылок на массивы с каждым массивом, содержащим n элементов.Сколько памяти занимает int [n] []?

Если я объявлю new int[n][], сколько памяти это займет? Я подозреваю, что это всего лишь n ссылок на нуль, но я хочу подтвердить это.

+0

Почему бы вам не написать простую программу для проверки этого? –

ответ

2

В Java мы имеем следующие размеры:

int = 4 байта

int[] = 4N + 24 байт

int[][] ~ 4Mn байт

Array = 24 байт + память для каждого запись в массиве

Итак, ваш массив new int[n][] - одномерная матрица от 0 до n. Он принимает 4N+24 байтов (24 байтов для массива + 4*N байт для каждой записи массива).

Кстати, это зависит от JVM и может быть более точным ответом: ~4N байтов плюс информация заголовка.

+0

У вас есть ссылки на ваши «+ 24 байта»? Если у вас есть, это, возможно, устарело. Посмотрите http://stackoverflow.com/questions/26357186/what-is-in-java-object-header или связанные с ним сообщения. –

+0

@ Erwin Bolwidt, вероятно, это зависит от JVM. Я беру это число из algs4.cs.princeton.edu/14анализа. –

Смежные вопросы