Testerparametereinstellungen:
1. Looping, um neue A () zu nennen, um einen Haufen Überlauf zu erreichen, java.lang.outofMemoryError: Java Heap Space,
Parameter für virtuelle Maschine: -xms1m -xmx1m -xx:+heapdumponoutofMemoryError, Erläuterung: Einstellung -xmx und -xms zu demselben können die automatische Ausdehnung der HEAP vermeiden. -Xx:+HeapdumponoutOfMemoryError ermöglicht es der virtuellen Maschine, den aktuellen Heap -Speicher -Dump -Snapshot zu entsorgen, wenn eine Ausnahme von Speicherüberlauf auftritt.
// while (true) {// new a (). do2 (); //}2. Looping, um Objektreferenzen aufzurufen, um einen Stapelüberlauf zu erreichen. java.lang.stackoverflowerror,
Parameter für virtuelle Maschine: -XSS128K,
Erläuterung: Stellen Sie die Größe des virtuellen Maschinenstapels auf 128KN ein
Unter einem einzigen Thread wird der obige Fehler unabhängig davon geworfen, ob der Stapelrahmen zu groß ist oder die Stapelkapazität der virtuellen Maschine zu klein ist und der Speicher nicht zugewiesen werden kann.
void do2 () {do2 ();};3.. Schleifen Sie die methode von String.intern () auf, um in den konstanten Pool zu schreiben, und die konstanten Poolüberläufe. Java.lang.outofMemoryError: Permgen Space
while (true) {list.add (string.ValueOf (i ++). praktion ()); }Parameter der virtuellen Maschine: -xx: permSize = 10m -xx: maxpermSize = 10m,
Erläuterung: Zeigt die Kapazität und die maximale Kapazität der permanenten Erzeugung an, die ursprünglich vom JVM zugewiesen wurde. (Der dauerhafte Bereich hat nicht genügend Speicher, und alles auf dem Haufen nach 1,8.
Vier Referenzzustände: (Klassenerbschaft erweitert Weepecreference <Car>)
1. Starkes Zitat: Objekt obj = neues Objekt (). Solange das starke Zitat noch existiert, wird der Müllsammler das referenzierte Objekt niemals sammeln.
2. Softrreferenz: Softrreferenz, die mit weiche Referenz zugeordneten Objekte werden recycelt, wenn nicht genügend Speicher vorliegt. Wenn dieses Recycling nicht genügend Speicher gibt, wird eine Ausnahme des Speicherüberlaufs ausgelöst. SofTreference <Byte []> sr = new Softrreference <Byte []> (Bytes);
3. Schwache Referenz: Schwache, Objekte, die mit schwachen Referenzen verbunden sind, können nur bis zur nächsten Müllsammlung überleben.
4. Virtuelle Referenz: Phantomreferenz, virtuelle Referenz wird verwendet, um den Recyclingstatus von Objekten zu verfolgen.
Temporäre Zeit, um GC auszulösen:
1. Wenn die jüngere Generation oder die ältere Generation voll ist, kann die virtuelle Java -Maschine keinen Speicherplatz mehr für neue Objekte zuweisen, dann löst die virtuelle Java -Maschine einen GC aus, um Objekte zu recyceln, die nicht mehr verwendet werden.
2. System.gc (), runtime.getRuntime (). GC () -Methoden auslösen normalerweise einen vollständigen GC und mindestens einen kleinen GC, und es kann möglicherweise nicht sofort recycelt werden.
3. Ausgelöst, wenn der Server im Leerlauf ist oder ältere Menschen auf dem Haufen sind.
Recyceln Sie den von dem referenceless Objekt besetzten Raum, nicht das Objekt selbst.
Es ist aber auch unvorhersehbar, an welchem Punkt der eigentliche Müllsammlungsmechanismus Maßnahmen ergreifen wird (auf ungeöffnete Quelle), was das gleiche Prinzip wie der präventive Faden ist, wenn er wirksam wird.
Generationensammlungsalgorithmus:
Sammler der neuen Generation und Sammler der Seniorengeneration.
Markierung von Algorithmus
Mark-Organisierungsalgorithmus
Der Unterschied zwischen Speicherüberlauf und Speicherleckage:
1. Speicherüberlauf: Das Programm hat nicht genügend Speicherplatz bei der Zuordnung von Speicher.
2. Speicherleck: Nachdem ein Programm für den Speicher beantragt wird, kann es keine Möglichkeit haben, den Speicher freizugeben. Es nimmt immer das Gedächtnis ein, dh das zugewiesene Objekt kann erreicht werden, ist jedoch nutzlos. Speicherlecks werden normalerweise durch ein großes Objekt im Speicher verursacht, können jedoch nicht freigegeben werden. Wird Speicherüberlauf verursachen.
Parallel und Parallelität:
1.. Parallel: Bezieht sich auf den Betrieb mehrerer Müllsammlerfäden;
2. Gleichzeitigkeit: Bezieht sich gleichzeitig auf den Benutzer -Thread und den Müllsammler -Thread.
Klassenlastmechanismus:
1. Laden (java.lang.class -Objekt), Überprüfung, Vorbereitung, Analyse, Initialisierung (Zuordnungsprozess), Verwendung (Verwendung) und Entladen (Entladen)
2. Überprüfen Sie (ob die im Byte -Stream enthaltenen Informationen korrekt sind und ob sie JVM entsprechen).
Vorbereiten (Werte den Klassenvariablen zuweisen, d. H. Statische Variablen, zuweisen 0).
Die drei Teile des Parsens (symbolische Referenzen ersetzen durch direkte Referenzen, Klassendatei zu Speicher) werden gemeinsam als Verknüpfung bezeichnet (Verknüpfung)
3. Ladephase: Holen Sie sich den binären Stream der .class -Datei;
Setzen Sie den Inhalt von Klasseninformationen, statischen Variablen, Bytekodien und Konstanten in den Methodenbereich ein
Generieren Sie ein java.lang.class -Objekt, das diese .class -Datei im Speicher darstellt, als Zugriffsportal für verschiedene Daten im Methodenbereich dieser Klasse.
4. Was Sie in der Initialisierungsphase tun, ist, die Client> -Methode aufzurufen, um die statische Variable dem angegebenen Wert zuzuweisen und statische Codeblöcke auszuführen.
Übergeordnete Delegationsmodell: (Startklasse Loader> Erweiterter Klassenlader> Anwendungsklassen Loader> Benutzerdefinierte Klassenlader)
Ein Klassenlader empfängt eine Klassenladeanforderung und delegiert die Anforderung an den übergeordneten Klassenlader, um sie abzuschließen. Erst nachdem die übergeordnete Klasse nicht fertiggestellt wird, wird sie sie selbst vervollständigen.
Prinzip des Auftretens:
Es ist nicht möglich, sich ausschließlich auf synchronisierte und volatile zu verlassen, um die Reihenfolge im Java -Speicher einzuschränken. Es hängt von den Regeln für Programmanrufaufträge ab, um die Reihenfolge der Setzer und Getter zu bestimmen.
Minor GC: Reinigen Sie den jungen Gürtelspeicher und können keinen Platz für ein neues Objekt zuweisen.
Major GC: Es soll das Alter aufräumen, und viele große GCs werden durch kleinere GC ausgelöst
Full GC: Es soll den gesamten Haufen Raum bereinigen - einschließlich der jüngeren Generation und der älteren Generation