Und in der Regel sind die Einheiten für den -Xmx
, -Xms
und -Xmn
Optionen verwendet ("k", "M" und "G", oder die weniger Standard-Möglichkeiten "K", "m" oder "g") Binary prefix Multiples (dh Potenzen von 1024), oder sind sie 1000?Bedeutet Java-Xmx1G 10^9 oder 2^30 Bytes?
Die Handbücher sagen, dass sie Kilobyte (KB), Megabyte (MB) und Gigabyte (GB) darstellen, was darauf hindeutet, dass sie Potenzen von 1000 sind, wie im ursprünglichen SI System definiert. Meine informellen Tests (denen ich nicht sehr sicher bin) deuten darauf hin, dass sie wirklich kibibytes (kiB), mebibytes (MiB) und gibibytes (GiB) sind, alle Leistungen von 1024.
Also was ist richtig? Z.B. Welcher Java-Code würde die aktuelle Größe anzeigen?
Die Verwendung von Vielfachen von 1024 ist für RAM-Größen nicht überraschend, da RAM normalerweise durch das Verdoppeln von Hardwaremodulen ausgelegt wird. Die Verwendung von Einheiten in einer klaren und standardisierten Weise ist jedoch immer wichtiger, da wir zu immer größeren Mächten gelangen, da das Potenzial für Verwirrung wächst. Die Einheit "t" wird auch von meiner JVM akzeptiert und 1 TiB ist 10% größer als 1 TB.
Hinweis: Wenn diese wirklich binäre Vielfache sind, schlage ich vor, die Dokumentation und Benutzeroberflächen Aktualisierung darüber sehr klar sein, mit Beispielen wie "Fügen Sie die Buchstaben k oder K, um anzuzeigen, kibibytes (1024 Byte) oder m oder M zur Angabe von Mebibyten (1048576 Bytes) ". Das ist der Ansatz, der beispielsweise in Ubuntu genommen wurde: UnitsPolicy - Ubuntu Wiki.
Hinweis: Weitere Informationen zu den Optionen finden Sie unter z. java - What are the Xms and Xmx parameters when starting JVMs?.
@ElliottFrisch Hauptsächlich stelle ich die Frage, auf der Suche nach einer endgültigen Antwort. Der Dokumentationsvorschlag soll nur mehr Klarheit darüber geben, worüber ich verwirrt bin. – nealmcb