2013-03-14 6 views
8

Während ich auf possible JVM flags for optimizing launching startup time meines RCP-Produkts schaute, fand ich diese attraktiv heißen -XX:UseFastEmptyMethods und -XX:UseFastAccessorMethods.JVM-Option XX: UseFastEmptyMethods/XX: UseFastAccessorMethods

Es scheint, dass diese Flags auf JDK-6 (und standardmäßig aktiviert) waren, während sie standardmäßig auf JDK-7 deaktiviert waren. Außerdem habe ich gelesen, dass der Kompromiss für diese Optimierung darin besteht, dass sie die Methodenaufrufzähler nicht erhöhen.

Welche Auswirkungen hat die Verwendung von Aufrufzählern? Betrifft das die Garbage Collection?

+1

im Erraten es beeinflussen GC wird nicht, aber vielleicht JIT beeinflussen, da werden diese Zähler verwendet "heißen" Codepfade für die Optimierung – radai

Antwort

7

Es dient dazu, die Aufrufanzahl von Methoden korrekt zu ermitteln, damit die VM die Hotspots in Ihrem Code besser identifizieren kann.

der Diskussion von here

Nach Wenn Sie auf JDK6 sind, dann können Sie diese zwei VM-Flags in Ihrem Ziel Java-Anwendung enthalten müssen:
-XX: -UseFastEmptyMethods-XX : -UseFastAccessorMethods

Ansonsten leer Methoden und Zugriffsmethoden wird in der Liste nicht angezeigt, weil die "schnelle" Version erhöht den Aufrufzähler für diese Methoden nicht. In JDK7 sind diese beiden Flags standardmäßig auf "false" gesetzt. Sie müssen also nicht verwenden, um sie explizit auf false zu setzen.


Siehe auch:

UseFastEmptyMethods/UseFastAccessorMethods considered harmful

+1

+1 dank zu bestimmen. Während der erste Teil der Antwort ein wenig unabhängig ist (ich frage warum und welche Konsequenzen für das Einschalten der Flags), ist der zweite Link nützlich. Ich würde immer noch lernen, unter welchen Umständen die Flagge zu wenden als sicher gilt. –

Verwandte Themen