was Java Virtual Machine während der Ausführung mehrerer Java-Anwendungen tun wird

8

Durch das Lesen dieses Artikels weiß ich, dass jede Java-Anwendung in einer bestimmten Java Virtual Machine ausgeführt wird Beispiel. Wenn ich also die folgenden Befehle ausführe ("Java -jar test1.jar", "Java -jar test2.jar"), bekomme ich zwei Prozesse im System und wenn jeder Befehl die Standard-Heap-Größe verwendet, zum Beispiel 256M. Die Gesamtspeicherkosten sind 512M, ist das richtig? Auch ich habe andere Fragen:

  • Ist die Java Virtual Machine ein Daemon-Prozess, starten Sie mit dem System?
  • Wenn ich "java -jar test1.jar" ausführe, erstellt es eine Instanz der Java Virtual Machine und führt dann die Hauptfunktion aus. Bedeutet dies, dass jede laufende Java-Anwendung ein Unter-Thread oder ein Prozess der Java Virtual Machine ist?
  • Ist jede Java-Anwendung einzeln ausgeführt, kann eine andere Anwendung keine Variable, Methode, Konstante usw. von dieser laufenden Java-Anwendung erhalten?
  • Wenn eine laufende Java-Anwendung abgestürzt ist, hat dies Auswirkungen auf andere laufende Java-Anwendungen?

PS: Ich habe gegoogelt und viele verschiedene Antworten bekommen, ich war total verwirrt. Jeder, der mir bei dieser Art von Fragen oder noch mehr Tiefe von Java Virtual Machine helfen kann. Zum Beispiel, Wie es funktioniert.

    
bannie 20.09.2012, 08:38
quelle

3 Antworten

7

Die JVM ist ein Standardprozess, genau wie jeder andere auch. Als solche gibt es keine implizite Kommunikation oder Zustandsverteilung zwischen den beiden. Jeder hat seinen eigenen Haufen, Threads usw. Wenn du einen tötest, beeinflusst das nicht den anderen.

Was wird freigegeben werden, sind die Codepages der JVM selbst. Der Kernel ist intelligent genug, um dieselbe binäre ( beliebige ) Binärdatei - nicht nur die JVM - zu identifizieren, die zweimal ausgeführt wird und das Image wiederverwendet. Dies gilt nur für den eigentlichen Binärcode - nicht für seinen Zustand. Weitere Informationen finden Sie hier . Linux.

Die JVM ist kein Daemon-Prozess, könnte aber beim Systemstart als Windows-Dienst oder Unix / Linux-Prozess gestartet werden (über /etc/init.d scripts). So würden Sie (sagen wir) einen Web-Service ausführen, der in Java geschrieben ist, wenn ein Computer hochgefahren wird.

    
Brian Agnew 20.09.2012, 08:45
quelle
2

1) Nein, aber es gibt eine Möglichkeit, Java-Anwendungen als Dienste mit Wrappern (Google für "Java-Dienst") zu starten.

2) Ja.

3) Sie können die Kommunikation zwischen Prozessen verwenden (z. B. HTTP). Es gibt jedoch keine Abkürzungen, da alle Prozesse in JVM ausgeführt werden.

4) Nein

    
SJuan76 20.09.2012 08:40
quelle
0
___ antwort12513493 ___

For the OS, JVM like an user application. Each JVM Instance is individual.

  1. Nein. JVM ist normaler Prozess wie andere. Aber Sie können es als Deamon-Prozess ausführen.
  2. Ja. Java-Anwendung läuft auf JVM genau wie Ihre Anwendung unter OS.
  3. Ja. Jeder JVM-Thread ist individuell, aber er kann mit anderen JVMs über das Netzwerk, RMI ...
  4. kommunizieren
  5. Es kommt darauf an. Normalerweise sind sie individuell, aber wenn ein JVM-Absturz cause the OS crash auftritt, werden andere JVMs ausgeführt.
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ answer12509070 ___

Die JVM ist ein Standardprozess, genau wie jeder andere auch. Als solche gibt es keine implizite Kommunikation oder Zustandsverteilung zwischen den beiden. Jeder hat seinen eigenen Haufen, Threads usw. Wenn du einen tötest, beeinflusst das nicht den anderen.

Was wird freigegeben werden, sind die Codepages der JVM selbst. Der Kernel ist intelligent genug, um dieselbe binäre ( beliebige ) Binärdatei - nicht nur die JVM - zu identifizieren, die zweimal ausgeführt wird und das Image wiederverwendet. Dies gilt nur für den eigentlichen Binärcode - nicht für seinen Zustand. Weitere Informationen finden Sie hier . Linux.

Die JVM ist kein Daemon-Prozess, könnte aber beim Systemstart als Windows-Dienst oder Unix / Linux-Prozess gestartet werden (über %code% scripts). So würden Sie (sagen wir) einen Web-Service ausführen, der in Java geschrieben ist, wenn ein Computer hochgefahren wird.

    
___ qstnhdr ___ was Java Virtual Machine während der Ausführung mehrerer Java-Anwendungen tun wird ___ tag123jvm ___ Die Java Virtual Machine (JVM) ermöglicht einer Reihe von Computersoftwareprogrammen und Datenstrukturen, ein virtuelles Maschinenmodell für die Ausführung anderer Computerprogramme und Skripts zu verwenden. Verwenden Sie dieses Tag für Fragen zu Tools, die von einer JVM bereitgestellt werden, oder zur Funktionsweise in einem bestimmten Szenario. ___ answer12508988 ___

1) Nein, aber es gibt eine Möglichkeit, Java-Anwendungen als Dienste mit Wrappern (Google für "Java-Dienst") zu starten.

2) Ja.

3) Sie können die Kommunikation zwischen Prozessen verwenden (z. B. HTTP). Es gibt jedoch keine Abkürzungen, da alle Prozesse in JVM ausgeführt werden.

4) Nein

    
___ qstntxt ___

Durch das Lesen dieses Artikels weiß ich, dass jede Java-Anwendung in einer bestimmten Java Virtual Machine ausgeführt wird Beispiel. Wenn ich also die folgenden Befehle ausführe ("Java -jar test1.jar", "Java -jar test2.jar"), bekomme ich zwei Prozesse im System und wenn jeder Befehl die Standard-Heap-Größe verwendet, zum Beispiel 256M. Die Gesamtspeicherkosten sind 512M, ist das richtig? Auch ich habe andere Fragen:

  • Ist die Java Virtual Machine ein Daemon-Prozess, starten Sie mit dem System?
  • Wenn ich "java -jar test1.jar" ausführe, erstellt es eine Instanz der Java Virtual Machine und führt dann die Hauptfunktion aus. Bedeutet dies, dass jede laufende Java-Anwendung ein Unter-Thread oder ein Prozess der Java Virtual Machine ist?
  • Ist jede Java-Anwendung einzeln ausgeführt, kann eine andere Anwendung keine Variable, Methode, Konstante usw. von dieser laufenden Java-Anwendung erhalten?
  • Wenn eine laufende Java-Anwendung abgestürzt ist, hat dies Auswirkungen auf andere laufende Java-Anwendungen?

PS: Ich habe gegoogelt und viele verschiedene Antworten bekommen, ich war total verwirrt. Jeder, der mir bei dieser Art von Fragen oder noch mehr Tiefe von Java Virtual Machine helfen kann. Zum Beispiel, Wie es funktioniert.

    
___
lichengwu 20.09.2012 13:18
quelle

Tags und Links