Это будет зависеть от того, какую JVM вы используете.
Предполагая, что вы не используете JVM со сжатыми указателями, массив будет потреблять:
- 8 байт для указателя типа.
- 4 байта для длины массива.
- 8 байтов для каждого элемента в массиве (это указатели на фактические объекты).
- Сумма: 8 + 4 + len * 8 байт
- Для JVM со сжатыми указателями: 4 + 4 + len * 4 байта
Тогда фактические объекты, которые вы храните (ссылки) в массиве, будут потреблять память в зависимости от того, какие они объекты. java.lang.Object содержит только указатель на класс, поэтому 8 байтов или 4 байта при использовании сжатых указателей.
Для ваших собственных классов вы можете подсчитать использование памяти, посмотрев на поля в классе. Каждая ссылка будет занимать 8 байтов (4 байта для сжатых указателей). Каждые длинные 8 байтов, int 4 байта, char / short 2 байта, байт / логическое значение 1 байт. Но все они будут выровнены по четному общему размеру, кратному 4 или 8 байтам, в зависимости от того, какую JVM вы используете.
person
thobe
schedule
07.04.2009