Как удостовериться, что я использую “сервер” JVM?

Это - действительно вопрос вкуса. Классы фабрики могут быть абстрагированы/соединены интерфейсом далеко по мере необходимости, тогда как методы фабрики являются более легким весом (и также будьте склонны быть тестируемыми, так как у них нет определенного типа, но они потребуют известной регистрационной точки, сродни сервисному локатору, но для определения местоположения методов фабрики).

8
задан itsadok 2 December 2009 в 14:12
поделиться

4 ответа

Вы можете сделать

System.out.println(System.getProperty("java.vm.name"));

Что на моем машина возвращает либо:

Клиентская виртуальная машина Java HotSpot (TM)

, либо

Java HotSpot (TM) 64-разрядная серверная виртуальная машина

. Конечно, вы не должны делать ничего критического на основе этого значения, так как оно вероятно, изменится в будущем и будет совершенно другим на другой JVM.

11
ответ дан 5 December 2019 в 07:35
поделиться

У меня был очень похожий вопрос , который я задавал на ServerFault . Я бы сказал, если вам интересно, какая версия запущена, всегда используйте -client или -server.

9
ответ дан 5 December 2019 в 07:35
поделиться

Что ж, если вы явно начинаете с приглашения командной строки -server, вы работаете в режиме сервера. Вы можете проверить это следующим образом:

  ManagementFactory.getRuntimeMXBean().getInputArguments();

Вы можете посмотреть RuntimeMXBean , который может открыть дополнительную информацию, но ее нужно будет протестировать на конкретной JVM, которую вы используете.

1
ответ дан 5 December 2019 в 07:35
поделиться

Без написания ни одной строчки кода, если вы используете JConsole для подключения к JVM, на вкладке «Сводка виртуальной машины» должно быть указано, какой именно (сервер или клиент ) Виртуальная машина находится под наблюдением.

Например,

Виртуальная машина: OpenJDK Server VM версии 1.6.0-b09

Для удаленного мониторинга JVM с помощью JConsole просто включите агент JMX (Java Management Extensions), запустив JVM со следующими свойствами системы

> java.rmi.server.hostname=[your server IP/Name] // without this, on linux, jconsole will fail to connect to the remote server where JVM is running
> com.sun.management.jmxremote.authenticate=false
> com.sun.management.jmxremote.ssl=false
> com.sun.management.jmxremote.port=[portNum]
1
ответ дан 5 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: