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?
"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.
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.
Tags und Links java