Obiekty są zawsze przechowywane w sterty . Jednakże odniesienie do per
zostaną zapisane w zmiennej lokalnej tablicy, który jest przechowywany w ramy utworzonej na main(String[])
, który jest przechowywany w stosu. Aby uzyskać więcej informacji, zobacz: The Structure of the Java Virtual Machine.
Edit: Nauczyłem się, że JVM faktycznie są w stanie przeznaczyć przedmiotów na stosie wykonując escape analysis. Co więcej, można zastosować technikę o nazwie , zastępując skalarną, w której pominięto przydział obiektu, a pola obiektu są traktowane jako zmienne lokalne. Możliwe jest przydzielanie zmiennych do rejestrów maszynowych.
Analiza ucieczki przez alokację stosów została zaimplementowana przez maszyny wirtualne HotSpot od wersji Java 6u14. Jest on domyślnie włączony od czasu Java 6u23. Aby obiekt został przydzielony na stosie, nie może wyminąć wątku wykonawczego, treści metody ani zostać przekazany jako argument do innej metody.
Możesz rozważyć zmianę zaakceptowanej odpowiedzi na to pytanie. – Gray