Heim  >  Artikel  >  Java  >  Detaillierte Übersicht über die Java Virtual Machine

Detaillierte Übersicht über die Java Virtual Machine

PHP中文网
PHP中文网Original
2017-06-20 14:35:161621Durchsuche

1. Überblick über die Java Virtual Machine

Das von Oracle offiziell definierte Java-Technologiesystem umfasst hauptsächlich die folgenden Teile:

  • Java-Programmierung Sprache

  • Java Virtual Machine für verschiedene Plattformen

  • Klassendateiformat

  • Java API-Klassenbibliothek

  • Java-Klassenbibliothek von Drittanbietern

Die drei Teile der Java-Programmiersprache, der Java Virtual Machine und der Java API-Klassenbibliothek können gemeinsam bezeichnet werden als JDK (Java Development Kit) bezeichnet, das die Mindestumgebung für die Entwicklung von Java-Programmen darstellt. Darüber hinaus werden die Java SE API-Teilmenge und die Java Virtual Machine in der Java API gemeinsam als JRE (Java Runtime Environment) bezeichnet, die Standardumgebung für die Ausführung von Java-Programmen.

Der Grund, warum die Java Virtual Machine „virtuell“ genannt wird, liegt darin, dass es sich nur um einen abstrakten Computer handelt, der durch eine Spezifikation definiert ist

2 🎜>Viele Studenten denken vielleicht, dass die Java Virtual Machine nur eine virtuelle Maschine ist. Oder denken Sie, dass sich die virtuelle Java-Maschine auf die virtuelle HotSpot-Maschine von Oracle bezieht. Hier ist eine kurze Einführung in die Java Virtual Machine-Familie, die 1996 von Sun in JDK 1.0 veröffentlicht wurde. Viele Arten virtueller Maschinen sind hier aufgetaucht und wieder verschwunden Maschinen, die derzeit am Leben sind.

HotSpot VM

Die virtuellen Maschinen, die mit Oracle JDK und OpenJDK geliefert werden, sind die gängigsten und am weitesten verbreiteten virtuellen Java-Maschinen. Technische Artikel, in denen die Java Virtual Machine vorgestellt wird, stellen, sofern nicht anders angegeben, in den meisten Fällen HotSpot VM
vor. HotSpot VM wurde nicht von Sun entwickelt, sondern von Longview Technologies, einem kleinen Unternehmen, das 1997 von Sun und 2009 von Oracle übernommen wurde. J9 VM
J9 VM ist eine von IBM entwickelte VM und derzeit die wichtigste Java Virtual Machine für die Entwicklung. Die Marktpositionierung von J9 VM ähnelt der von HotSpot VM. Es handelt sich um eine vielseitige virtuelle Maschine, die für alles von Server über Desktop-Anwendungen bis hin zu eingebetteten Anwendungen konzipiert ist. Das aktuelle Leistungsniveau von J9 VM liegt ungefähr auf dem gleichen Niveau wie HotSpot VM.
Zing VM
Basierend auf Oracles HotSpot VM verbessert es viele Details, die sich auf die Latenz auswirken. Die drei größten Verkaufsargumente sind:

    1. Geringe Latenz, „keine Pause“ C4 GC, die durch GC verursachte Pause kann unter 10 ms gesteuert werden und die unterstützte Java-Heap-Größe kann erreicht werden 1 TB;
  • 2. Schnelle Aufwärmfunktion nach dem Start.
  • 3. Verwaltbarkeit: Zing Vision, ein in die JVM integriertes Überwachungstool, das keinen Overhead verursacht und jederzeit in der Produktionsumgebung aktiviert werden kann.
3. Ausführungsprozess der Java Virtual Machine

Was ist der Ausführungsprozess, wenn wir ein Java-Programm ausführen? Wie unten gezeigt.

Wie Sie auf dem Bild oben sehen können,

hat die Java Virtual Machine keine notwendige Verbindung mit der Java-Sprache. Sie bezieht sich nur auf eine bestimmte Binärdatei: die Klassendatei

.

4. Struktur der Java Virtual Machine

Die hier erwähnte Architektur bezieht sich auf das abstrakte Verhalten der Java Virtual Machine und nicht auf die spezifische Implementierung der HotSpot VM. Gemäß der Java Virtual Machine-Spezifikation sieht die abstrakte Java Virtual Machine wie in der folgenden Abbildung dargestellt aus.

JVM = Klassenlader, Klassenlader + Ausführungsmotor, Ausführungsmotor + Laufzeitdatenbereich

. Classloader lädt die Klassendatei auf der Festplatte in den Laufzeitdatenbereich in der JVM, ist aber nicht dafür verantwortlich, ob die Klassendatei ausgeführt werden kann, was in der Verantwortung der Ausführungs-Engine liegt .

Die abstrakte Spezifikation der Java Virtual Machine ist nur ein Konzept. Im Allgemeinen ist die Java Virtual Machine eine spezifische Implementierung der Spezifikation. Diese Implementierung kann von mehreren Anbietern stammen und auf mehreren Plattformen existieren. Es kann vollständig in Software oder in einer Kombination aus Hardware und Software implementiert werden.

5. Lebenszyklus einer virtuellen Maschine

Die begrenzte Aufgabe einer Laufzeit-Java-Virtual-Machine-Instanz ist: verantwortlich für die Ausführung eines Java-Programms.

Wenn ein Java-Programm gestartet wird, wird eine Instanz einer virtuellen Maschine geboren. Wenn das Programm geschlossen und beendet wird, stirbt die Instanz der virtuellen Maschine

. Wenn drei Java-Programme gleichzeitig auf demselben Computer ausgeführt werden, werden drei Java Virtual Machine-Instanzen erhalten. Jedes Java-Programm wird in einer eigenen Java Virtual Machine-Instanz ausgeführt. Eine Java Virtual Machine-Instanz führt ein Java-Programm aus, indem sie die main()-Methode einer Anfangsklasse aufruft. Die main()-Methode muss öffentlich und statisch sein, void zurückgeben und ein String-Array als Parameter akzeptieren. Jede Klasse mit einer solchen main()-Methode kann als Ausgangspunkt für die Ausführung eines Java-Programms verwendet werden.

Im obigen Beispiel wird die main()-Methode in der Anfangsklasse des Java-Programms als Ausgangspunkt für den Anfangsthread des Programms verwendet, und alle anderen Threads werden von diesem Anfangsthread gestartet.

Es gibt zwei Arten von Threads innerhalb der Java Virtual Machine: Daemon-Threads und Nicht-Daemon-Threads . Daemon-Threads werden normalerweise von der virtuellen Maschine selbst verwendet, z. B. Threads, die Garbage-Collection-Aufgaben ausführen . Ein Java-Programm kann jedoch auch jeden von ihm erstellten Thread als Daemon-Thread markieren. Der anfängliche Thread im Java-Programm – derjenige, der in main() beginnt – ist ein Nicht-Daemon-Thread.

Solange Nicht-Daemon-Threads ausgeführt werden, wird das Java-Programm weiterhin ausgeführt. Wenn alle Nicht-Daemon-Threads im Programm beendet werden, wird die Instanz der virtuellen Maschine automatisch beendet . Wenn der Sicherheitsmanager es zulässt, kann das Programm selbst auch beendet werden, indem die exit()-Methode der Klasse Runtime oder der Klasse System aufgerufen wird.

Das obige ist der detaillierte Inhalt vonDetaillierte Übersicht über die Java Virtual Machine. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Wie verwende ich JavaPoet?Nächster Artikel:Wie verwende ich JavaPoet?