Kann ein Java-Programm ohne seine Datei ausgeführt werden?

8

Ich bin ziemlich neu in diesem Zeug, aber im Wesentlichen: Es gibt Programme und es gibt Prozesse. Ein Programm ist eine Datei, die bei Ausführung einen Prozess hervorbringt.

Sie können ein Programm nicht löschen, wenn ihm noch ein Prozess zugeordnet ist. Der Prozess muss zuerst getötet werden.

Dies scheint auch für Java-Programme der Fall zu sein. Aber ich bin neugierig, warum - wird das Ganze nicht sowieso in die JVM geladen?

    
Voldemort 09.06.2014, 22:51
quelle

2 Antworten

4

"Gelöschte Datei" beinhaltet etwas OS-Semantik. Unter Unix / Linux kann eine Datei gelöscht werden und alle offenen Dateigriffe bleiben gültig. Wenn der letzte geöffnete Dateizugriffspunkt verschwindet, wird der von der gelöschten Datei belegte Speicherplatz in den freien Speicherplatz zurückgegeben.

Unter Windows gibt es möglicherweise andere Mechanismen.

    
blafasel 10.06.2014 00:15
quelle
2

Die JVM funktioniert als Just-In-Time (JIT) -Compiler. Es gibt viele Quellen von Informationen über die JIT-Kompilierung, aber im Grunde, wenn ein Java-Programm läuft, wird es Teile des Programms treffen, die benötigt werden, diese Teile des Programms sind .class Dateien. Diese .class -Dateien sind nur eine Zwischenform von Java-Code (es ist nicht ganz Java-Code, aber noch nicht ganz Maschinencode). Offensichtlich benötigt das Kompilieren zur Laufzeit (JIT) Ressourcen (CPU-Zyklen) und somit Zeit. Daher lädt die JVM nur Teile des Programms , die benötigt werden, um verschwendete CPU-Zyklen zu minimieren.

Aber ja, Ihr Verständnis von Prozessen / Programmen ist richtig. Zusammenfassend: Ein Prozess ist eine laufende Instanz eines Programms. Dieses laufende Programm kann dann noch weitere Prozesse oder Threads zur Ausführung bringen.

    
Rich E 10.06.2014 00:10
quelle

Tags und Links