Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Und generell ist es nicht schlau, Dingen Namen zu geben, die falsche Annahmen zu ihrem Inhalt suggerieren. Du hast da zwei Arrays, nicht zwei Listen. Ist für das Beispiel völlig egal, aber generell finde ich sowas schon wichtig, wobei es da eher darauf ankommt, zu beschreiben, was "darin" ist und weniger, in welcher Form. Aber eine falsche Form sollte man nicht benennen.
Und falls es noch interessant ist: Für die Frage, ob Daten auf dem Stack oder dem Heap abgelegt werden, ist der Datentyp unerheblich. Vielmehr spielt es eine Rolle, wo die entsprechende Variable deklariert wurde. Grob gesagt sieht das so aus: Alle methodenlokalen Variablen (also die Parameter einer Methode plus ggf. innerhalb der Methode deklarierte Variablen) landen auf dem Stack. Alles andere auf dem Heap.
Ergo, beide Arrays aus Deinem Beispielcode landen auf dem Stack, weil sie innerhalb einer Methode (main) deklariert wurden.
Das stimmt so nicht ganz. Lokale Variablen in Methoden liegen immer auf den Stack. In diesem Fall wären das dann die Referenzen auf die erzeugten int[]-Objekte. Ob ein Objekt auf dem Stack oder Heap abgelegt wird entscheidet erst der JIT-Compiler zur Laufzeit. (Sitchwort EscapeAnalysis)
Ob ein Objekt auf dem Stack oder Heap erzeugt wird hat in Java btw so gut wie garkeinen Performanceunterschied, da der Heap normalerweise in Bezug auf die Objekterzeugung wie ein Stack verwaltet wird. Einen Vorteil der Stackallocation gibt es nur im GC da dort ein paar Objekte weniger geprüft werden müßen.
Das stimmt so nicht ganz. Lokale Variablen in Methoden liegen immer auf den Stack. In diesem Fall wären das dann die Referenzen auf die erzeugten int[]-Objekte.
Nach meinem Verständnis geht es bei Escape Analysis um Ablaufpfade und die Frage, ob Kopien von Objekten erstellt werden müssen oder nicht. Ob eine Variable auf dem Stack oder Heap landet, wird davon nicht tangiert. Java HotSpot Virtual Machine Performance Enhancements (leider sehr oberflächlich). Kann mich aber auch irren. Ergänzende Infos wären nett.
Lumaraf hat gesagt.:
Ob ein Objekt auf dem Stack oder Heap erzeugt wird hat in Java btw so gut wie garkeinen Performanceunterschied,