Re: Memory allocation for creating array
От: · Великобритания  
Дата: 11.10.23 21:08
Оценка: 4 (2)
Здравствуйте, Aleksei_Lekomtsev, Вы писали:


AL>Integer[] arr = new Integer[integer.max_value];

AL> Правильно я понимаю в этом случае JVM выделит память на Stack для хранения arr ссылки и Integer.MAX_VALUE ссылок?
Скорее всего да (если не учитыавть JIT). Плюс ещё объект Integer[] на стеке. Каждая ссылка в худшем случае — 8 байт (может быть меньше благодаря CompressedOops).

AL>Integer[] arr = new Integer[integer.max_value];

AL>Arrays.setAll(arr, i -> new Integer(i));
AL> А в этом случае JVM выделит память на Stack для хранения arr ссылки и Integer.MAX_VALUE ссылок и на Heap для Integer.MAX_VALUE значений массива?
Значения — это объекты класса Integer.

AL> int[] arr = new int[Integer.MAX_VALUE];

AL> В этом случае JVM выделит память на Stack для хранения arr ссылки и на Heap для Integer.MAX_VALUE значений массива?
Да. Плюс ещё объект int[]. Значения тут — 4 ровно байта.
avalon/3.0.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Memory allocation for creating array
От: Aleksei_Lekomtsev  
Дата: 11.10.23 07:30
Оценка:
public void createArrayWithObjects() {
    Integer[] arr = new Integer[Integer.MAX_VALUE];
}


Правильно я понимаю в этом случае JVM выделит память на Stack для хранения arr ссылки и Integer.MAX_VALUE ссылок?

public void createAndInitializeArrayWithObjects() {
    Integer[] arr = new Integer[Integer.MAX_VALUE];
    Arrays.setAll(arr, i -> new Integer(i));
}

А в этом случае JVM выделит память на Stack для хранения arr ссылки и Integer.MAX_VALUE ссылок и на Heap для Integer.MAX_VALUE значений массива?

public void createAndInitializeArrayWithPrimitivies() {
    int[] arr = new int[Integer.MAX_VALUE];
}

В этом случае JVM выделит память на Stack для хранения arr ссылки и на Heap для Integer.MAX_VALUE значений массива?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.