2012-06-15 11 views
7

Manchmal hörte ich Leute über die Anlaufzeit für Java diskutieren. Es scheint, dass dies ein wichtiger Leistungsaspekt ist. Aber was ist es wirklich?Worin besteht die Startzeit in der Java Virtual Machine?

  • Woraus besteht es?
    1. Ladezeit der Klasse durch dynamisches Laden der Klasse?
    2. Oder erstmalige Kompilierung Overhead in Compile-only JVM?
    3. Oder etwas anderes, das die "Langsamkeit" während der Anfangsperiode einer Java-Programmausführung verursacht?

Dann wird die zweite Frage ist

  • wie die Anlaufzeit für Java-Programme zu messen? Von welchem ​​Zeitpunkt an wird die Dauer als Startzeit bezeichnet?

Ich weiß nicht, ob meine Frage in der richtigen Weise gestellt wird; Wenn nicht, lass es mich wissen. Vielen Dank!

+0

Ich habe diesen Begriff immer schon gehört t o informell, und ich bin sehr gespannt, ob jemand eine formale Definition dafür gefunden hat. – templatetypedef

Antwort

1

Die Startzeit ist nicht formal definiert. Tatsächlich sind die meisten Begriffe, die in der praktischen IT verwendet werden, nicht formell definiert. (Oder die formalen Definitionen werden ignoriert.)

Aber grob gesprochen ist es die Zeit vom Start der Anwendung bis zu dem Zeitpunkt, an dem sie etwas Nützliches tun kann. Was während des Starts läuft, ist anwendungsabhängig, beinhaltet aber das Laden statischer Klassen, die Initialisierung statischer Klassen und (möglicherweise) die JIT-Kompilierung einiger Klassen. Andere Dinge könnten das Starten von Benutzeroberflächen, das Verbinden mit Datenbanken, das Vorladen von anwendungsspezifischen Datenstrukturen, die "Verdrahtung" von Anwendungen usw. sein.

Das Problem mit dem Versuch, "Startzeit" formell zu definieren ist, dass jede Definition nicht funktioniert für einige signifikante Teilmenge der Anwendungstypen. Und selbst wenn Sie es definieren können, gibt es die Schwierigkeit, dass einige der Startup- (oder Warmup-) Tasks im Hintergrund weiterlaufen, nachdem sich die Anwendung als "bereit" angekündigt hat.

(Dies ist kein Java spezifisches Problem Betrachten wir die von einem Laptop „startup“;.. Also das, was er zwischen die Stromversorgung geschieht auf Ihrem Desktop und voll nutzbar sein)

Wie die Inbetriebnahme messen Zeit für Java-Programme? Von welchem ​​Zeitpunkt an wird die Dauer als Startzeit bezeichnet?

Beide von denen sind bis zu Ihnen zu entscheiden, abhängig von der Art der Anwendung, die Sie reden, und was für Sie als die Startphase für Ihre Anwendung zu betrachten.

1

Wie Stephen C erwähnt, gibt es keine allgemeine formale Definition für "Start-up-Zeit".

Um ein intuitives Verständnis dieses Konzepts zu erhalten, fand ich eine Beschreibung auf Oracle's webs.

Grundsätzlich gibt es eine informelle Definition. "Die Startzeit einer Anwendung ist die Zeit, die benötigt wird, damit die Anwendung gestartet wird und bereit ist, das zu tun, was sie tun soll. "Sowohl die JVM und Anwendung selbst kann die Anlaufzeit auswirken.

Außerdem bietet es eine Idee (Anpassung Heap-Größe -Xms/-Xmx), um die Startzeit zu reduzieren. Entweder zu groß oder zu klein Heap-Größe, die Startzeit verlängern würde.

Ferner „Diagnosing a Slow JVM Startup“ zeigt einige Hinweise, die Gründe für einen langsamen Start-up zu finden.

Notiere die vor allem im Zusammenhang mit der JRockit JVM sind , aber die Ideen sind allgemeiner

Verwandte Themen