Heap und Stack

David2456

Aktives Mitglied
Hallo,
in meiner Aufgabe soll ich die Informationen der Variablen im Heap und Stack in den gewünschten Zeitpunkten angeben. Jedoch werde ich aus dem Beispiel nicht schlau. Kann mir einer weiterhelfen? Stack ist doch sogesehen das Gedächtnis der momentan verwendeten Methode und Heap das Gedächtnis einer Methode, welche in einer anderen Methode aufgerufen wird, oder nicht? Bitte korrigieren falls ich falsch liege. Falls der Code noch als Text erforderlich sein sollte bitte anschreiben.

Danke schonmal
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    59,9 KB · Aufrufe: 37
  • Unbenannt2.JPG
    Unbenannt2.JPG
    58,9 KB · Aufrufe: 36

Tobse

Top Contributor
Der Heap ist der Speicherbereich (=Gedächtnis), in welchem Objekte und deren Eigenschaften gespeichert sind. Der Stack speichert, welche Methode von wo aufgerufen wurde und die Parameter, die übergeben wurden. Aber merke: der Stack enthält bei nicht-nativen Datentypen (nativ=boolean,short,char,int,long,float,double) nur eine Referenz auf das Objekt im Heap.
 

InfectedBytes

Top Contributor
kleine Ergänzung, der Stack enthält nicht nur die parameter, sondern alle lokalen Variablen.
Objekte und auch Arrays liegen immer im Heap, auf dem Stack liegt nur eine Referenz in den Heap.
 

InfectedBytes

Top Contributor
das ist richtig, habe mich wohl etwas unglücklich ausgedrückt^^
Auch wenn die JVM interessanterweise im Detail ein paar unterschiede macht^^
 

InfectedBytes

Top Contributor
ich glaube nicht das der Compiler das inlined.
wenn man sich den bytecode zum obigen code ansieht (via javap) dann wird dort das array ganz normal erzeugt:
Java:
final int[]arr = {1,2,3};
Code:
 0: iconst_3
 1: newarray       int
 3: dup
 4: iconst_0
 5: iconst_1
 6: iastore
 7: dup
 8: iconst_1
 9: iconst_2
10: iastore
11: dup
12: iconst_2
13: iconst_3
14: iastore
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...

Neue Themen


Oben