Robię niektóre badania i natknąłem się na pytanie, które prosi, aby pokazać prawidłową schemat pamięci następującego kodu:Co dzieje się na stosie lub sterty?
int [] d1 = new int[5];
d1[0] = 3;
Integer [] d2 = new Integer[5];
d2[0] = new Integer(3);
ArrayList d3 = new ArrayList();
d3.add(3);
Oto moja próba na diagramie pamięci, ale może być nieprawidłowe:
rozumiem rzeczy jak obiektów, zmiennych instancji, a „nowe” przypadki są na stercie i rzeczy takie jak zmienne lokalne i prymitywnych typów są na stosie, ale nadal jestem zdezorientowany, jeśli chodzi o typy tablic.
Każda pomoc jest doceniana.
Tablica jest w końcu ma 'Object' (nawet tablicy z pierwotnych). Przy okazji, jesteś blisko ostatecznej odpowiedzi. –
@LuiggiMendoza Zmieniłem swój diagram. Czy to była poprawna odpowiedź? – blutuu
Prawie JVM utrzymuje pulę dla obiektów "Integer" od -128 do 127. Tak więc wartość 'Integer' z wartością 3 będzie taka sama dla obu tablic' d2' i 'd3' ArrayList. –