Heim  >  Artikel  >  Stapelunterschied

Stapelunterschied

藏色散人
藏色散人Original
2019-06-03 14:07:3027222Durchsuche

Stapelunterschied

Der Unterschied zwischen Heap und Stack:

1. Unterschied in der Stapelplatzzuordnung:

1. Stapel (Betriebssystem): Wird vom Betriebssystem automatisch zugewiesen und freigegeben und speichert Funktionsparameterwerte, lokale Variablenwerte usw. Seine Betriebsmethode ähnelt der des Stapels in der Datenstruktur. 2. Heap (Betriebssystem): Er wird im Allgemeinen vom Programmierer zugewiesen und freigegeben. Wenn der Programmierer ihn nicht freigibt, kann er recycelt werden das Betriebssystem, wenn das Programm endet. Die Zuordnungsmethode ist in der verknüpften Liste ähnlich.

2. Unterschiede in den Stack-Caching-Methoden:

1 Der Stack verwendet einen Cache der ersten Ebene, wenn er aufgerufen wird unmittelbar nach Abschluss des Aufrufs.

2. Der Heap wird im Cache der zweiten Ebene gespeichert und der Lebenszyklus wird durch den Garbage-Collection-Algorithmus der virtuellen Maschine bestimmt (nicht, sobald er verwaist ist). Objekt, es kann recycelt werden). Daher ist die Geschwindigkeit beim Aufrufen dieser Objekte relativ gering.

Heap: Im Speicher werden Referenzdatentypen gespeichert. Der Heap ist eigentlich ein Speicherplatz in einer verknüpften Listenstruktur Der Heap wird bestimmt durch Die Größe des Referenztyps wird direkt bestimmt, und Änderungen in der Größe des Referenztyps wirken sich direkt auf die Änderungen im Heap aus

Stapel: Es handelt sich um einen im Speicher gespeicherten Werttyp Die Größe beträgt 2 MB. Wenn sie überschritten wird, wird ein Fehler gemeldet und ein Speicherüberlauf auftritt ): Der Heap kann als Baum betrachtet werden, wie zum Beispiel: Heap-Sortierung;

Stapel (Datenstruktur): Eine First-In-Last-Out-Datenstruktur.

Funktionen: First in, last out

Da es sich bei der zugrunde liegenden Implementierung von Linklist um eine verknüpfte Listenstruktur handelt, verwenden wir Linklist, um zu untersuchen, was ist zuerst rein, zuletzt raus

Der Code lautet wie folgt:

package com.zking.list;
 
import java.util.LinkedList;
 
public class Linklisttest {
 
public static void main(String args[]) {
LinkedList ll = new LinkedList();
for (int i = 0; i < 5; i++) {
ll.addFirst(i);
}
 
ll.removeFirst();
 
for (Object object : ll) {
System.out.println(object);
}
 
}
 
}
Laufendes Ergebnis:

Gemäß Anhand dieses einfachen Beispiels können wir erkennen, dass in der for-Schleife die Reihenfolge, in der wir Daten zur Sammlung hinzufügen, 0, 1, 2, 3, 4, ist. 4 wird gelöscht und das endgültige Durchlaufergebnis ist 3, 2, 1, 0.

Es spiegelt also die Eigenschaften des Stapels wider: zuerst rein, zuletzt raus. .

Das obige ist der detaillierte Inhalt vonStapelunterschied. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn