/ / Wie Java den Speicher effizient verwaltet - Java, String

Wie Java den Speicher effizient verwaltet - Java, String

Strings sind in Java unveränderlich, d. H. Bei jeder Änderung am String-Objekt wird eine neue Instanz erstellt, und das alte Objekt wird nicht referenziert, d. In einem großen Programm wird es also so viele nicht referenzierte Objekte geben, auf die nicht zugegriffen werden kann. Schafft Java das? Wie? zum Beispiel-

String s="abc";
s=s.concat("def");

Objekt "abc" kann jetzt nicht mehr referenziert werden, da Zeichenfolgen jedoch unveränderlich sind, ist es immer noch im Speicherpool vorhanden.

Antworten:

2 für die Antwort № 1

Zunächst klingt es so, als ob Sie eine Absturzquelle in Java und in der Garbage Collection benötigen. Nachdem dies gesagt wurde, gibt es einige grundlegende Punkte, die geklärt werden müssen:

1) Nur weil ein Objekt unveränderlich ist, bedeutet dies nicht, dass der Speicher verloren geht. Wenn keine Verweise auf ein unveränderliches Objekt vorhanden sind, ist es ebenso für die Garbage Collection wie alle anderen Objekte geeignet.

2) String-Konstanten sind eine Ausnahme, da sie immer sind interniert von der JVM. Dies bedeutet, dass String-Konstanten in einem speziellen Speicherpool gehalten werden. Bei der Erstellung eines Strings wird dieser Pool zuerst überprüft, ob der String bereits existiert. Wenn dies der Fall ist, wird ein Verweis darauf zurückgegeben. (Sie können nicht-konstante Zeichenfolgen erzwingen, um sich dem Pool anzuschließen, indem Sie die String.intern() Methode).

3) Die Menge an Speicherplatz, die diese Zeichenfolgen beanspruchen, ist so gering, dass Sie sich im Grunde niemals darum kümmern sollten.


1 für die Antwort № 2

Java verfügt über einen automatischen Garbage-CollectorDieser Garbage Collector sucht ständig nach ungenutzten Objekten. Sobald ein solches Objekt erkannt / gefunden wird, wird es zerstört, dh der Speicher / die Ressourcen, die von diesem Objekt verwendet werden, wird freigegeben. Dies wird von JVM erledigt. Wenn Sie möchten, können Sie jedoch die JVM anweisen, die Speicherbereinigung durchzuführen. Danach kann die JVM die Speicherbereinigung entsprechend einplanen

Um zu erfahren, wie die Speicherbereinigung funktioniert, überprüfen Sie den folgenden Link:

http://javarevisited.blogspot.in/2011/04/garbage-collection-in-java.html

http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html


-1 für die Antwort № 3

Die Speicherverwaltung in Java wird von JVM (z. B. Garbage Collector in JVM) ausgeführt

Alle Objekte werden in einem Heap gespeichert, wenn sie eine Referenz haben

MyCode ref=new MyCode();

Der Garbage Collector validiert dieses Objekt in zwei Fällen für die Garbage Collection

  1. Wenn der Verweis auf das Objekt null wird
ref=null;
  1. Wenn die Insel der Isolation passiert

http://www.geeksforgeeks.org/island-of-isolation-in-java/

Die Speicherverwaltung unterscheidet sich in Bezug auf String-Objekte, da die obigen Antworten dies bereits erläutert haben