Как узнать, какие настройки по умолчанию включены для Sun JVM?

Я хочу попробовать CompressedOops на своей JVM. Нет, мне интересно, может ли он быть включен по умолчанию. Я запускаю этот jvm на debian / squeeze:

$ java -version
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)

Некоторые люди говорят, что он включен по умолчанию, некоторые говорят, что это не так:

из: http://forums.yourkit.com/viewtopic.php?f=3&t=3185

Да, вы правы, я тоже это проверил, и Compressed Oops не активирован по умолчанию в 64-битной версии Java6u21, я не понимаю, почему так сказано в ссылках, которые я предоставил.

Я попытался проверить это с помощью jconsole / JMX, но не смог найти атрибут с именем CompressedOops или ему подобным.

Кто-нибудь знает, где я могу получить список всех параметров jvm для конкретной сборки с их значениями по умолчанию?

С уважением, Яннинг


person Janning    schedule 08.03.2011    source источник
comment
Связано: http://stackoverflow.com/questions/1880299/what-gc-parameters-is-a-jvm-running-with   -  person skaffman    schedule 17.03.2011
comment
Я на 90% уверен, что он не включен по умолчанию. Не то чтобы вы позволили этому убедить вас :)   -  person skaffman    schedule 17.03.2011


Ответы (1)


Вы можете запустить с -XX:+PrintFlagsFinal, чтобы распечатать значения всех флагов при запуске JVM.

В качестве альтернативы вы можете использовать инструмент jinfo, чтобы проверить значение флага в запущенной JVM:

> jinfo -flag UseCompressedOops 7364
-XX:+UseCompressedOops

Используйте jps, чтобы найти pid процесса.

person staffan    schedule 17.03.2011
comment
Это отличный ответ. Но для меня это не работает должным образом на debian squeeze: невозможно открыть файл сокета: целевой процесс не отвечает или виртуальная машина HotSpot не загружена. он показывает мне длинный список значений, если я назову его просто «jinfo ‹pid›», но в этом представлении я не вижу, установлен ли CompressOops. - person Janning; 18.03.2011
comment
jinfo также можно использовать для динамического включения / выключения флага, например jinfo -flag +HeapDumpOnOutOfMemoryError <pid>, если флаг управляемый. jinfo - очень полезный, хотя и малоизвестный инструмент. - person Jarek Przygódzki; 20.01.2014
comment
Варианты действительно полезные: -XX:+PrintFlagsFinal - person hao; 30.08.2019