JMM ist eine unvermeidliche Stufe für einen Programmierer, der ein tieferes Verständnis von Java erlangen möchte. Dieser Artikel ist eher theoretisch und so einfach wie möglich zu verstehen. Lassen Sie uns dann zunächst über die Hauptspeicherzuweisung von JVM sprechen. 1 Java Virtual Machine Stack (Java Virtual Machine Stack) Der Virtual Machine Stack ist für den Thread privat. Dies ist das Speichermodell für die Java-Methodenausführung . Jedes Mal, wenn eine Methode ausgeführt wird, wird ein Stapelrahmen auf dem Stapel der virtuellen Maschine erstellt. Der Stapelrahmen ist eine Datenstruktur, die hauptsächlich lokale Variablen in der Methode speichert (Basistyp, Objektreferenz, ReturnAddress-Typ (zeigt auf die Adresse von). eine Bytecode-Anweisung) )), Operationsstapel (bezieht sich auf den Stapel von Operationsanweisungen nach der Methodenkompilierung), dynamische Verknüpfung, Methodenexport. Im Allgemeinen ist der Java-Speicher in Stapel und Heap unterteilt, und der Stapel bezieht sich auf den Stapel der virtuellen Maschine. Aber die Speicherzuweisung von Java ist nicht so einfach. Die dynamische Verknüpfung wird wie folgt erklärt: Jeder Stapelrahmen enthält einen Verweis auf die Methode, zu der der Stapelrahmen während der Ausführung im Konstantenpool gehört JMM Java Detaillierte grafische Erklärung des Speichermodells
Einführung: JMM ist für Programmierer gedacht, die Java verstehen möchten Ausführlich Dies ist ein unvermeidlicher Test. Dieser Artikel ist eher theoretisch und so einfach wie möglich. Wenn es Fehler gibt, hoffe ich, dass Sie mich korrigieren können.
2. 【Tote Java-Parallelität】-----Neuordnung des Java-Speichermodells
Einführung: Um die Leistung zu verbessern, ordnen Prozessoren und Compiler häufig Anweisungen neu an, aber sie können nicht beliebig neu angeordnet werden, nicht wie Sie es möchten muss die folgenden zwei Bedingungen erfüllen: 1. Das Ergebnis der Programmausführung kann in einer Single-Thread-Umgebung nicht geändert werden. 2. Eine Neuordnung ist nicht zulässig, wenn Datenabhängigkeiten bestehen. Wenn Sie den vorherigen Blog von LZ gelesen haben, wissen Sie das Tatsache ist, dass die beiden Punkte in einem Punkt zusammengefasst werden können: JMM ermöglicht eine beliebige Reihenfolge, die nicht aus dem Prinzip „Vorher geschieht“ abgeleitet werden kann. as-if-serial semantics as-if-se
3 🎜>
Einführung: Im letzten Blog ([Deadly Java Concurrency] – Eingehende Analyse des Implementierungsprinzips von Volatile) erwähnte LZ es Es wurde festgestellt, dass es aufgrund des Vorhandenseins von lokalem Thread-Speicher und Hauptspeicher in Verbindung mit der Neuordnung zu Sichtbarkeitsproblemen in Multithread-Umgebungen kommt. Wenn wir also Synchronisation und Sperren richtig verwenden, wann ändert Thread A die Variable a, die für Thread B sichtbar ist? Wir können nicht in allen Szenarien festlegen, wann von einem Thread geänderte Variablen für andere Threads sichtbar sind. Diese Regel gilt ab JDK 5. JMM verwendet ha
4. Eingehende Analyse des Java-Speichermodells: Zusammenfassung
Einführung: Die Das sequentiell konsistente Speichermodell ist ein theoretisches Referenzmodell, und Prozessorspeichermodelle verwenden beim Entwurf normalerweise das sequentiell konsistente Speichermodell als Referenz. Das JMM- und Prozessorspeichermodell führt beim Entwurf zu einigen Lockerungen im sequentiellen Konsistenzmodell, denn wenn Prozessor und JMM vollständig gemäß dem sequentiellen Konsistenzmodell implementiert werden, werden viele Prozessor- und Compileroptimierungen verhindert, was sich nachteilig auf die Ausführungsleistung auswirkt wird stark betroffen sein.
5. Die 2. PHP Global Developers Conference (einschließlich PPT der Konferenz) Developer Headline Game Developer Wandoujia Development
Einführung: Entwickler, PHP: Die 2. PHP Global Developers Conference (einschließlich PPT der Konferenz): Die PHP Global Developers Conference fand vom 14. bis 15. Mai 2016 in Peking statt. Weitere Bilder vor Ort bitte anklicken : http://t.cn/RqeP7y9, http://t.cn/RqD8Typ Schließlich kann die PPT dieser Konferenz hier heruntergeladen werden: http://pan.baidu.com/s/1pLajmm3 Wenn Sie Wenn ja Ich habe durch die Lektüre dieses Artikels etwas gelernt. Geben Sie mir bitte einen Daumen nach oben. Wenn der Artikel Fehler enthält, weisen Sie ihn bitte darauf hin. Voneinander lernen und gemeinsam Fortschritte machen! Einführung: PPT-Download-Adresse: http://pan.baidu.com/s/1pLajmm3 7 >Oracle meldet Fehlermeldung ORA Einführung: Oracle meldet Fehlermeldung ORA-28001: Das Passwort ist abgelaufen. Lösung: 1. Melden Sie sich mit SYSDBA-Berechtigung an. 2. Kontoinformationen anzeigen : Wählen Sie Benutzername, Kontostatus aus dba_users 3. Wenn das Konto gesperrt/abgelaufen ist, muss es zuerst entsperrt werden: Ändern Sie die Entsperrung des Benutzer-BJMMIS-Kontos und ändern Sie dann das Passwort a 8 🎜>LJMM-Plattform (Linux +Jexus+MySQL+mono) Eine kurze Zusammenfassung der Verwendung von MySQL auf MySQL Einführung: LJMM-Plattform (Eine kurze Zusammenfassung der Verwendung von MySQL unter Linux +Jexus+MySQL+Mono) [Verwandte Q&A-Empfehlungen]: java – Warum erfordert JMM Vorschriften? Gewöhnliche Schreibvorgänge und flüchtige Lesevorgänge können nicht neu angeordnet werden?jmm – Wie synchronisiert Java Daten mit dem Hauptspeicher? Java – Welche Vorteile hat es, mit JVM für die Programmierung vertraut zu sein? Wie kann man JMM besser verstehen? Welche Wissenspunkte müssen kombiniert werden, um zu verstehen, und welche Aspekte der Praxis müssen durchgeführt werden, um das Verständnis zu vertiefen? Java – Wann ist die Verwendung von Multithread-Programmierung erforderlich?
Das obige ist der detaillierte Inhalt von8 empfohlene Artikel über JMM. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!