Was macht das HotSpot JVM-Flag -XX:+UseCompressedOops
und wann sollte ich es verwenden? Welche Unterschiede in Bezug auf Leistung und Speichernutzung sehe ich, wenn ich es auf einer 64-Bit-Java-Instanz verwende (anstatt es nicht zu verwenden)?
Was macht das HotSpot JVM-Flag -XX:+UseCompressedOops
und wann sollte ich es verwenden? Welche Unterschiede in Bezug auf Leistung und Speichernutzung sehe ich, wenn ich es auf einer 64-Bit-Java-Instanz verwende (anstatt es nicht zu verwenden)?
Antworten:
Die meisten HotSpot JVM im letzten Jahr haben es standardmäßig aktiviert. Mit dieser Option können Referenzen in einer 64-Bit-JVM 32-Bit sein und auf fast 32 GB Heap zugreifen. (mehr als 32-Bit-Zeiger können) (Sie können auch nahezu unbegrenzten Off-Heap-Speicher haben). Dies kann eine erhebliche Menge an Speicher sparen und möglicherweise die Leistung verbessern.
Wenn Sie diese Option verwenden möchten, empfehlen wir Ihnen, auf eine Version zu aktualisieren, auf der sie standardmäßig aktiviert ist, da es möglicherweise einen guten Grund gab, z. B. Fehler, warum sie zuvor nicht aktiviert wurde. Versuchen Sie Java 6 Update 23 oder Java 7 Update 5.
Kurz gesagt, schalten Sie es nicht ein, sondern verwenden Sie eine Version, in der es standardmäßig aktiviert ist.
Aktualisieren:
In Java 8 haben Sie die Möglichkeit, das -XX:ObjectAlignmentInBytes=
festzulegen. Wenn Sie die Heap-Größe auf 64 GB festlegen , werden -XX:ObjectAlignmentInBytes=16
32-Bit-Referenzen verwendet und weiterhin verwendet.
JE cache
Dies wird empfohlen, wenn Sie verwenden. Dies liegt daran, dass nicht herausgefunden werden kann, ob Sie Komprimierungen verwenden. Hoppla oder nicht. Ich kann mir ein paar Methoden vorstellen, die Ihnen das übrigens sagen können. Sie sollten es IMHO nicht in der Befehlszeile angeben müssen, es sei denn, Sie möchten, dass die JVM fehlschlägt, wenn sie nicht aktiviert ist. Beispiel: Sie haben einen 64-GB-Heap auf Java 8.