Auswirkungen von nicht verwendeten JAR-Dateien in CLASSPATH

8

Ich habe so viele Fragen und Antworten zu Tools gelesen, die verfügbar sind, um unbenutzte JARs zu finden, wie zum Beispiel:

  1. loosejar
  2. Klassenpfadhelfer

Meine Frage hier ist, gibt es irgendwelche Auswirkungen (wie das Laden von Klassen in Speicher, Leistung usw.) von unbenutzten JARs im Klassenpfad entweder zur Kompilierzeit oder zur Laufzeit? Frage gilt sowohl für die Ausführung als Standalone-Programm und Web-Server (Apache Tomcat), obwohl ich zunächst nur über Standalone-Programme dachte.

HINWEIS: Ich verwende JDK 6u32 (64-Bit).

    
Gnanam 11.06.2012, 12:53
quelle

3 Antworten

8
  

Gibt es Auswirkungen (wie das Laden von Klassen in den Arbeitsspeicher, Leistung usw.) von unbenutzten JARs im Klassenpfad, entweder zur Kompilierungszeit oder zur Laufzeit?

Es wird eine kleine Auswirkung geben. Wenn der Klassenlader (oder das Äquivalent des Compilers) gestartet wird, muss er den Index jeder JAR-Datei lesen, um herauszufinden, welche Klassen sich in jeder JAR befinden. Wenn Sie unnötige JARs auf dem Klassenpfad haben, hat der Klassenlader mehr zu tun und wird (zumindest temporär) mehr Speicher verwenden, um die Indizes zwischenzuspeichern.

Dies gilt für alle Arten von Java-Anwendungen.

Die Frage, die Sie nicht gestellt haben, ist, ob die Auswirkung signifikant ist. Die Antwort ist "im Allgemeinen nein" ... aber je mehr "nutzlose Sachen" Sie auf dem Klassenpfad haben, desto größer wird der Einfluss sein.

    
Stephen C 11.06.2012, 12:57
quelle
3

Das Hauptproblem ist nicht die Leistung, da die Kosten relativ gering sind und nur beim Laden neuer Klassen. Das Hauptproblem ist die Wartbarkeit. Zum Beispiel, wenn eine Bibliothek aktualisiert werden muss, können Sie viel Zeit damit verschwenden, zu testen, ob die Anwendung immer noch in Ordnung ist, mit der neuen Version, nur um festzustellen, dass die Bibliothek nicht benutzt wurde. (Angenommen, Sie haben eine neue Bibliothek, die eine neuere Version einer Bibliothek benötigt, die Sie bereits verwenden)

    
Peter Lawrey 11.06.2012 12:59
quelle
0

Ja, es hat Auswirkungen - weil die JVM nach notwendigen Klassen in den JARs des CLASSPATH sucht. Es ist auch sinnvoll, versiegelte JARs beizubehalten, um der JVM mitzuteilen, dass sie keine verwandten Klassen in anderen JARs suchen.

P.S .: javac ist auch ein Java-Programm, für die Aufzeichnung.

    
quelle

Tags und Links