Speicherzuweisung in Java: Alles, was Sie im Jahr 2022 wissen müssen
Veröffentlicht: 2021-01-10Die Speicherzuweisung in Java bezieht sich auf den Prozess, bei dem die Computerprogramme und -dienste dedizierten virtuellen Speicherbereichen zugewiesen werden. Die Java Virtual Machine unterteilt den Speicher in Stack- und Heap-Speicher. Bei Java Virtual Machine kann die Ausführung einer Anwendung mit ihrem maximalen Potenzial aus dem Stack- und Heap-Speicher erfolgen. Jedes Mal, wenn eine neue Variable oder ein neues Objekt deklariert wird, weist der Speicher solchen Operationen Speicher zu.
Inhaltsverzeichnis
Stapelspeicher
Die Stock- Speicherzuordnung in Java wird für statische Speicher- und Thread-Ausführung verwendet. Die in diesem Speicher enthaltenen Werte sind temporär und auf bestimmte Methoden beschränkt, da auf sie nach dem Last-In-First-Out-Prinzip verwiesen wird.
Sobald der Speicher aufgerufen wird und ein neuer Block im Stapelspeicher erstellt wird, enthält der Stapelspeicher primitive Werte und Referenzen, bis die Methode andauert. Nach seiner Beendigung wird der Block geleert und steht für einen neuen Prozess zur Verfügung. Im Allgemeinen ist die Gesamtgröße des Stack-Speichers unbedeutend gegenüber der des Heap-Speichers.
Erfahren Sie, wie Sie Anwendungen wie Swiggy, Quora, IMDB und mehr erstellenEigenschaften des Stapelspeichers
Basierend auf den verschiedenen Abschnitten der Speicherzuweisung in Java Virtual Machine (JVM) sind hier einige der diskreten Merkmale des Stack-Speichers aufgeführt:
- Der Stapelspeicher kann wachsen oder schrumpfen, wenn neue Methoden aufgerufen und entsprechend zurückgegeben werden.
- Jede Variable im Stapel kann ausgeführt werden, solange der Geltungsbereich der Methode besteht.
- Es wird automatisch zugewiesen und freigegeben, wenn eine Methode ausgeführt wird.
- Bei vollem Speicher setzt der java.lang.StackOverFlowError ab.
- Der Zugriff ist im Vergleich zum Heap-Speicher schneller.
Lesen Sie: Full-Stack vs. Software Engineer: Welche sollten Sie wählen?
Methoden, die bei der Stapelspeicherzuweisung in Java verwendet werden
- Object push(Object element): Hier wird ein Item an die Spitze des Stapels geschoben.
- Object pop(): Jedes Element, das sich ganz oben im Stapel befindet, wird geleert und zurückgegeben. Falls ein Stack leer ist, wenn pop() aufgerufen wird, tritt die Ausnahme – EmptyStackException auf.
- Object peek(): Hier wird das oberste Element zurückgegeben, aber nicht geleert.
- Boolean empty(): Wenn die Schleife keinen obersten Wert in ihrem Stapel hat, gibt die Funktion 1 (wahr) zurück, andernfalls 0 (falsch).
- In der Suche (Objektelement): Dies wird verwendet, um zu verstehen, ob ein Objekt im Stapel vorhanden ist. Falls der Wert gefunden wird, gibt die Funktion die Position des Elements von der Spitze des Stapels zurück, andernfalls gibt sie -1 zurück.
Lesen Sie: Java-Projekte und -Themen für Anfänger

Java heap space
Java Heap Space wird hauptsächlich von der Java-Laufzeit verwendet und kommt jedes Mal ins Spiel, wenn ein Objekt erstellt und darin zugewiesen wird. Die diskrete Funktion, wie die Garbage Collection, leert weiterhin den Speicher, der von den vorherigen Objekten verwendet wird, die keine Referenz enthalten. Denn ein im Heap Space erstelltes Objekt kann anwendungsübergreifend freien Zugriff haben.
Die Speicherzuordnung in Java ist in Teile unterteilt, nämlich Heap, Stack, Code und Static.
Eigenschaften des Java-Heap-Speichers
- Zugänglich über die komplizierte Speicherverwaltungstechnik, einschließlich der Young Generation, Old or Tenured Generation und Permanent Generation.
- Wenn der Heap-Speicher voll ist, gibt er java.lang.OutOfMemoryError zurück.
- Der Zugriff in diesem Speicher ist vergleichsweise langsamer als der des Stapelspeichers.
- Es wird keiner automatischen Freigabe unterzogen und erfordert eine ähnliche Funktion wie Garbage Collector, um Fremdobjekte zu entfernen, damit der Speicher in seiner optimalen Phase arbeiten kann.
Ein Beispiel für die Stack- und Heap- Speicherzuweisung in Java ist:


Quelle
Heap Space und Stack Memory: Grundlegende Unterschiede
Heap-Space-Speicher | Stapelspeicher |
Alle Teile der Anwendung rufen den Heap-Speicher auf. | Die Ausführung des Stapelspeichers ist auf einen einzelnen Thread beschränkt. |
Jedes Mal, wenn ein Objekt erstellt wird, wird es im Heap-Bereich gespeichert. | Der Stapelspeicher umfasst nur seine Referenz und lokale primitive Variablen. |
Auf Objekte hier kann global über die Anwendung zugegriffen werden. | Andere Threads können nicht auf Stapelspeicherobjekte zugreifen. |
Hier wird Erinnerung nach jungen und alten Generationen definiert. | Die Speicherverwaltung erfolgt auf einer Last-In-First-Out-Basis. |
Der Speicher bleibt im Rahmen der Anwendung erhalten. | Erinnerung ist vorübergehend. |
Die Methoden wie – XMX und XMS JVM werden verwendet, um die optimale Größe des Heap-Speichers zu definieren. | Für Stapelspeicher wird es durch die -XSS-Methode bestimmt. |
Hier tritt bei vollem Speicher die Ausnahme von java.lang.OutOfMemoryError auf. | Hier tritt der Fehler java.lang.StackOverFlowError auf, falls der Speicher voll ist. |
Die Größe ist größer, aber die Verarbeitung dauert im Vergleich zum Stapelspeicher länger. | Die Größe ist geringer, aber schneller in der Ausführung für den reibungslosen LIFO-Betrieb. |
Lesen Sie auch: Gehalt für Java-Entwickler in Indien
Lernen Sie Softwarekurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.
Fazit
Die Speicherzuordnung in Java erfolgt auf zwei Arten, hauptsächlich Stack- und Heap-Speicherplatz. Wir hoffen, dass es Ihnen geholfen hat, den Prozess von allem zu verstehen.
Wenn Sie mehr über Full-Stack-Softwareentwicklung erfahren möchten, schauen Sie sich das Executive PG-Programm in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenge Schulungen, mehr als 9 Projekte, und Aufgaben, IIIT-B-Alumni-Status, praktische praktische Abschlussprojekte und Arbeitsunterstützung bei Top-Unternehmen.
Wie funktioniert die Speicherverwaltung in Java?
Java Virtual Machine (JVM) ist ein Computerprogramm zum Ausführen von Programmen, die in der Programmiersprache Java geschrieben sind. Es macht den Prozess der Verwendung der Speicherverwaltung effizient. Außerdem ist es robust ausgelegt, sodass selbst bei einem Absturz des Betriebssystems das auf der JVM laufende Programm nicht beeinträchtigt wird. Speicherverwaltung bedeutet, jeden Teil des Arbeitsspeichers (RAM) in einem Computersystem zu verwalten. JVM überwacht die Zuweisung und Freigabe von Speicher bei Bedarf. Sobald ein Programm in den Speicher geladen wird, weist die JVM dafür Speicherplatz zu. Dieser Vorgang wird Heap genannt. Der Heap ist ein gemeinsamer Speicherplatz für viele Teile der Anwendung.
Was ist Garbage Collection in Java?
Die Java Virtual Machine (JVM) verwendet die Referenzzählung, um die Anzahl der Java-Objekte zu verfolgen. Bevor ein Objekt gesammelt werden kann, muss die Anzahl der Verweise auf dieses Objekt null erreichen. Das Benutzerprogramm kann Objekte explizit löschen, indem es die Methode finalize() aufruft. Finalize ist eine statische Methode in der Object-Klasse, die von Garbage Collector (GC) aufgerufen wird. Finalize-Methode gibt alle Ressourcen des Objekts frei, bevor Garbage Collector sich um dieses Objekt kümmert. Garbage Collector ist der Prozess der Reinigung unerwünschter Objekte. Der Garbage Collector-Prozess wird ausgelöst, wenn das Java-Laufzeitsystem feststellt, dass der Java-Heap fast voll ist. Jedes Objekt hat eine Bitmap in JVM. Die Bitmap wird für jedes Objekt festgelegt, um zu verfolgen, ob es verwendet wurde oder nicht. Wenn die Bitmap auf 0 gesetzt wird, kümmert sich GC um dieses Objekt.
Was sind die Funktionen der Programmiersprache Java?
Die Java-Programmiersprache ist eine allgemeine Programmiersprache auf hoher Ebene, die zum Erstellen von Anwendungen und Applets verwendet wird. Java-Software kann ohne Neuprogrammierung auf jeder Plattform ausgeführt werden, die Java unterstützt. Merkmale der Programmiersprache Java sind: Objektorientierte Merkmale, robust, hohe Sicherheit und plattformunabhängig, kostenlos, einfach zu erlernen und zu verwenden. Java ist eine objektorientierte Programmiersprache, die plattformunabhängig ist und auch auf jedem Betriebssystem oder jeder Plattform verwendet werden kann. Java ist eine kompilierte Sprache und es wird Bytecode erzeugt, der dann in der Java Virtual Machine ausgeführt wird.