Ich lese aus einigen Dokumenten, dass Hotspot VM verwendet eine Datenstruktur namens Oop Maps, um alle OOPs in VM zu verwalten. Meine Frage ist, wann wird diese Oop Map Datenstruktur generiert? Zur Kompilierzeit oder zur Laufzeit? Weitere detaillierte Dokumente dazu werden mehr als begrüßt. Danke Jungs.Was bedeutet Oop Maps in Hotspot VM genau
Antwort
OopMap ist eine Struktur, die angibt, wo sich Objektreferenzen (OOPs) auf dem Java-Stack befinden. Sein Hauptzweck besteht darin, GC-Wurzeln auf Java-Stapeln zu finden und die Referenzen zu aktualisieren, wenn Objekte innerhalb des Heap verschoben werden.
Es gibt drei Arten von OopMaps:
- OopMaps für interpretiert Methoden. Sie werden träge berechnet, d. H. Wenn GC auftritt, indem der Bytecode-Ablauf analysiert wird.
- OopMaps für JIT-kompilierte Methoden. Sie werden während der JIT-Kompilierung erzeugt und zusammen mit dem kompilierten Code gespeichert, so dass die VM die Stapelspeicherorte und die Register, in denen die Objektreferenzen gespeichert sind, schnell anhand der Befehlsadresse finden kann.
- OopMaps für generierte freigegebene Laufzeit Stubs. Diese Maps werden von den Entwicklern - Autoren dieser Runtime-Stubs - manuell erstellt.
Das ist ziemlich coole Antwort, aber ich möchte mehr wissen, wenn nicht unpassend: 1) OopMaps für interpretierte Methoden. Sie werden träge berechnet, d. H. Wenn GC auftritt, indem der Bytecode-Ablauf analysiert wird. >>>>>>>> Wo werden diese Informationen in JVM gespeichert? Gibt es einen detaillierten Hinweis darauf, wie sie berechnet werden? Oder einfach Quellcode-Dateien in OpenJDK? 2) Wenn GC passiert und der Thread zum Safepoint geht, kann JVM einfach alle GC-Root-Sets für den aktuellen Thread finden, indem er Oop Maps im aktuellen sicheren Punkt überprüft. Ist das richtig? Vielen Dank. –
@BillRanderson 1) Die beste Referenz ist der Quellcode (gut dokumentiert BTW): [generateOopMap.cpp] (http://hg.openjdk.java.net/jdk7u/jdk7u/hotspot/file/d638e49facb6/src/share/ vm/oops/generateOopMap.cpp). InterpreterOopMap wird in [OopMapCache] (http://hg.openjdk.java.net/jdk7u/jdk7u/hotspot/file/d638e49facb6/src/share/vm/interpreter/oopMapCache.hpp) gespeichert. – apangin
@BillRanderson 2) Während GC läuft JVM durch alle Thread-Stacks. Jeder Stapel wird als ein Strom von Stapelrahmen geparst. Die Frames werden entweder interpretiert oder kompiliert oder stubs. Interpretierte Frames enthalten Informationen zur Java-Methode und bci (Bytecode-Index). OopMapCache hilft dabei, eine OopMap zu finden, die der angegebenen Methode und bci entspricht. Die Methode eines kompilierten Rahmens wird durch die Suche nach Befehlsadressen ermittelt. Zusammengestellte Methoden enthalten OopMaps zusammen mit dem Code. – apangin
- 1. Was bedeutet Bindung genau?
- 2. Was bedeutet Composable genau?
- 3. Was bedeutet UrlReferrer genau?
- 4. Was bedeutet xmlns = "" genau
- 5. Was genau bedeutet "===" in Javascript?
- 6. Was genau bedeutet typsichere Abfragen?
- 7. Was genau bedeutet "Closing over"?
- 8. Was bedeutet google.setOnLoadCallback (initialize) genau?
- 9. Was bedeutet "anonyme VM" in Zuordnungsinstrumenten?
- 10. Was genau ist Körper bedeutet in DKIM
- 11. Was genau bedeutet "Genauigkeit" in HTML5 Geolocation?
- 12. Was bedeutet Vorverarbeitung genau in Compiler
- 13. Was bedeutet das genau in Scala?
- 14. was genau bedeutet Referenzzählung in C++ ?,
- 15. Was genau bedeutet -1 refresh_interval in Elasticsearch?
- 16. Was genau bedeutet "DisallowConcurrentExecution" in Quartz.net
- 17. Was genau bedeutet var x: * in ActionScript?
- 18. Was genau bedeutet "Enthält" in XNA?
- 19. Was genau bedeutet das in C#?
- 20. In Ruby, was genau bedeutet tLABEL?
- 21. Was genau bedeutet .pipe() im Schluck?
- 22. Was genau bedeutet eine "persistente Verbindung"?
- 23. Was bedeutet die JPA @Entity-Annotation genau?
- 24. vmstat: Was genau bedeutet CPU warten?
- 25. Was bedeutet OpenJDK JMH "score error" genau?
- 26. Was genau bedeutet <[email protected]>?
- 27. Was genau bedeutet das im AngularJS Controller?
- 28. Java-Eigenschaft "user.dir" - was genau bedeutet das?
- 29. Was genau Non-DFS verwendet bedeutet?
- 30. Was bedeutet 'var vm = das;' bedeuten in Winkelsteuerungen?
Interessanter Gast, aber warum gibt es negative Stimmen ohne Kommentar? Jemand wird von JVM Kopfverletzungen bekommen? – jkj
Ich sehe nur eine negative Stimme –