Що робить прапор HotSpot JVM -XX:+UseCompressedOops
і коли мені його використовувати? Яку різницю в продуктивності та використанні пам’яті я побачу, використовуючи її на 64-розрядному екземплярі Java (проти невикористання)?
Що робить прапор HotSpot JVM -XX:+UseCompressedOops
і коли мені його використовувати? Яку різницю в продуктивності та використанні пам’яті я побачу, використовуючи її на 64-розрядному екземплярі Java (проти невикористання)?
Відповіді:
У більшості HotSpot JVM за останній рік це було включено за замовчуванням. Цей параметр дозволяє посиланням бути 32-розрядними в 64-розрядному JVM і мати доступ до 32 ГБ купи. (можуть більше 32-розрядних покажчиків) (Ви також можете мати майже необмежену пам’ять без кучі). Це може заощадити значний обсяг пам'яті та потенційно покращити продуктивність.
Якщо ви хочете скористатися цією опцією, я пропоную вам оновити її до версії, яка ввімкнена за замовчуванням, оскільки, можливо, були поважні причини, такі як помилки, чому її раніше не вмикали. Спробуйте Java 6 оновлення 23 або Java 7 оновлення 5.
Коротше кажучи, не вмикайте його, використовуйте версію, яка має це за замовчуванням.
Оновлення:
У Java 8 ви можете встановити, -XX:ObjectAlignmentInBytes=
і насправді, якщо розмір купи до 64 ГБ, він буде використовувати -XX:ObjectAlignmentInBytes=16
і все ще використовувати 32-розрядні посилання.
JE cache
Це тому, що з якихось причин не вдається зрозуміти, використовуєте ви компреси на жаль. Я можу придумати кілька методів, які можуть сказати вам це до речі. Вам не потрібно вказувати його в командному рядку IMHO, якщо ви не хочете, щоб JVM вийшов з ладу, якщо це не ввімкнено. наприклад, у вас є купа 64 ГБ на Java 8.