Method Area, Stack, Heap

chillerStudent

Bekanntes Mitglied
Guten Tag,

es ist folgender Programmcode gegeben:

Java:
class A {

static final int N = 10;
static int[] a;

public static void main(String[] args) {
 a = new int[N];
 for (int i = 0; i < N; ++i) {
 a[i] = 10 * i;
}
printArray(a);
 int[] a = { 1, 2, 3, 4, 5 };
 reset();
 printArray(a);
}

static void printArray(int[] a) {
 for (int el: a) {
 Out.print(el + " ");
}
a = null;
Out.println();
}

static void reset() {
 a = null;
 /* printArray(a); */
}

}

Ich muss nun herausfinden, was alles auf MethodArea, Stack und Heap gespeichert ist.
1. In Zeile 7 und 8
2. In Zeile 21 nach Aufruf in Zeile 11
3. Zeile 22 nach Aufruf in Zeile 11
4. Zeile 12, 13 und 14 vor Ausführung der Anweisung

Zu 1. :

MA: class A; N; main(); printArray(); reset();
Stack: args=null; a mit Verweis auf Heap; i;
Heap: new int[10];

Ist das bis hier richtig?
 
Ich sagen dass da auf MethodArea, Stack und Heap NICHTS gespeichert ist.

Damit da etwas gespeichert wird, muss es ausgeführt werden. Um es auszuführen, muss es übersetzt sein.

Das Programm ist aber NICHT kompilierbar.
 
Out cannot be resolved

ok, sorry.

Java:
class A {
 
static final int N = 10;
static int[] a;
 
public static void main(String[] args) {
 a = new int[N];
 for (int i = 0; i < N; ++i) {
 a[i] = 10 * i;
}
printArray(a);
 int[] a = { 1, 2, 3, 4, 5 };
 reset();
 printArray(a);
}
 
static void printArray(int[] a) {
 for (int el: a) {
 System.out.print(el + " ");
}
a = null;
System.out.println();
}
 
static void reset() {
 a = null;
 /* printArray(a); */
}
 
Ist grundsätzlich für das allgemeine Programmieren nicht Kriegsentscheidend.
Für Spezialfälle eventuell schon
Eine Beschreibung der Bereiche und was wo rein fällt findet man z.B. hier:
Speicher
 

Neue Themen


Zurück
Oben