Frage von Paranormal43, 20

Java Garbage Collectible Heap?

Hallo, ich weiß, dass alle Objekte auf dem Heap 'leben', und wenn sie nicht mehr referenziert werden, werden sie vom Garbage Collector gelöscht.

Ich habe gelesen, dass die Variablen im RAM gespeichert werden, nun ist meine Frage: Stimmt das ? Werden die Variablen im RAM gespeichert, und wie werden die Variablen verwaltet ?

Antwort
von ByteJunkey, 13

Bei C++ gib es 2 Arten, um Dinge zu erstellen und zwischenzuspeichern:
1. Heap (Raw-Pointer, Smart-Pointer)
2. Stack (alle Instanzen, welche keine Pointer sind)


Beides befindet sich im RAM und sie unterscheiden sich seehr stark. Schau einfach mal auf YouTube, da gibt es viele gute Erklärungen ;)

Kommentar von TeeTier ,

Naja, Pointer (egal ob Raw oder Smart) können liegen, wo sie wollen. Ich glaube, das was du meinst ist der alloziierte Speicher, auf den die Pointer verweisen. Aber selbst das kann zu 100% auf dem Stack geschehen:

int a[16];
int *p = a;

Wie du siehst, liegen sowohl der Speicher an sich, als auch die darauf zeigenden Pointer auf dem Stack. :)

Bei Smart-Pointern sieht das dann so aus:

std::unique_poiner<int[]> u {new int[16]};

Hier liegt u auf dem Stack; das gleiche gilt für den intern verwalteten Zeiger, der auf den alloziierten Speicher in der Initialisierungsliste liegt. Nur besagter Speicher selbst liegt wirklich auf dem Heap. :)

Und zu guter Letzt: Es gibt nicht "nur" 2 Arten, um Dinge zwischen zu speichern, sondern mindestens fünf Arten, wie Daten gespeichert werden: das text-Segment, initialisierter Speicher im data-Segment, uninitialisierter Speicher aka bss-Segment, und der von dir erwähnte Heap bzw. Stack:

// Zeiger auf Strings:
char a[] = "abc";
char *b = "ABC";

// Lokale Variablen:
int x = 0;
static int y = 0;
int xx;
static int yy;

// Globale Variablen:
long p;
long q = 0;

Die meisten Plattformen bieten noch mehr Möglichkeiten, was sich dann aber teilweise schon mit anderen Themen überschneidet: Memory Mapped Files, z. B. :)

Kommentar von ByteJunkey ,

Oh Danke für die "Aufklärung". Da war ich wohl nicht ganz auf dem neusten Stand...

Antwort
von nurlinkehaende, 15

Der Heap befindet sich im RAM. Heap ist eine mögliche Spielart der Speicherverwaltung, RAM bezeichnet die Hardware.

Keine passende Antwort gefunden?

Fragen Sie die Community