Es fiel mir schwer, den Titel zu dieser Frage zu schreiben, aber hier ist meine Situation und was ich gefragt habe:
Ich vermute, die Wurzel meiner Frage ist: Sind .class-Dateien erforderlich, nachdem die Anwendung geladen und ausgeführt wurde? Sind die Klassen nur im Speicher gespeichert, und ich brauche die Dateien nicht auf der Dateisystem mehr? Oder greift es immer noch auf das Dateisystem zu / liest es?
Jede Einsicht oder besseres Verständnis dessen, was Java für eine laufende Anwendung benötigt, wird geschätzt.
Klassen werden bei Bedarf geladen. Der Klassenlader versucht nicht, eine Klasse zu laden, bis auf diese Klasse verwiesen wurde. Daher würde das Entfernen von Klassendateien aus dem Klassenpfad in der Mitte eines Laufs mit ziemlicher Sicherheit zu Fehlern führen.
Wenn alle Dateien in den Speicher geladen wurden, dann wäre das nicht nötig ... aber wie kann man dann sicherstellen, dass alle Klassen in den Speicher geladen wurden ... also würden Sie Klassen-Dateien im Klassenpfad benötigen
Nun, ich denke, Sie müssen einen Schritt zurück machen und die Lösung überdenken.
Sie haben geschrieben, dass Sie Integrationstests durchführen. Und als Teil des Tests wechseln Sie die Quellen, die getestet werden. Wenn Sie dies tun, werden Sie nutzlose Testdaten erzeugen, weil Sie nicht sicher sein können, was wirklich ausgeführt wurde.
Wenn Sie zwei verschiedene vrsion / branches Ihrer Software testen wollen, aktivieren Sie einfach zwei Testläufe und vergleichen Sie die Ergebnisse.
Sie können nur sicher sein, dass eine * .class Datei geladen ist, wenn Sie sie benutzt haben. Nach dem Laden der Klassendatei verbleibt sie im Speicher der JVM. Vielleicht wird es entladen, wenn es für einige Zeit unbenutzt ist und der GEM-Raum knapp wird (aber ich glaube nicht).
Tags und Links java git classloader