к нему приложено немало исследований, и я бы посоветовал прочитать его, чтобы понять механизм управления и исполнения JShell для локального и удаленного выполнения.

равочной информации:

-J<flag>              Pass <flag> directly to the runtime system.
                      Use one -J for each runtime flag or flag argument
-R<flag>              Pass <flag> to the remote runtime system.
                      Use one -R for each remote flag or flag argument

Я не могу найти объяснение в обоихдокументация по инструментам а такжеРуководство пользователя jshell.

Кроме того, что такое «система удаленного выполнения» в контексте jshell?

Ответы на вопрос(2)

Решение Вопроса

в JShell есть 3 основных «места» для выполнения кода:

В текущем процессе (см.DirectExecutionControl)

В той же JVM, что и клиент JShell (см.LocalExecutionControl)

На удаленном агенте (см.JdiDefaultExecutionControl)

С помощьюjshell инструмент, у нас нетток обрабатывать перед запуском, поэтому у нас есть только два варианта - использовать одну JVM (локально) или две JVM - одну для клиента JShell (локально) и другую для механизма выполнения (возможно, удаленно).

Интересно то, что JShell всегда запускает две JVM по умолчанию, как жестко--execution ключ"failover:0(jdi:hostname(" + loopback + ")),1(jdi:launch(true)), 2(jdi)" (видетьJShell исходный код класса).

Ближе к делу. Я провел пару экспериментов с-verbose опцию и проверенные опции JVM во время выполнения сManagementFactory.getRuntimeMXBean().getInputArguments().

jshell -J-verbose команда

напечатанный-verbose вывод в консоль.

нет-verbose опция во входных аргументах:[-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:63305]

jshell -R-verbose команда

нет-verbose вывод в консоль.

напечатанный-verbose опция во входных аргументах:[-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:63339, -verbose]

jshell --execution="local" -J-verbose команда

напечатанный-verbose вывод в консоль.

напечатанный-verbose опция во входных аргументах:[-Dapplication.home=C:\Program Files\Java\jdk-9, -Xms8m, -verbose, -Djdk.module.main=jdk.jshell]

jshell --execution="local" -R-verbose

нет-verbose вывод в консоль.

нет-verbose опция во входных аргументах:[-Dapplication.home=C:\Program Files\Java\jdk-9, -Xms8m, -Djdk.module.main=jdk.jshell]

TL; DRУдаленное выполнение (случай по умолчанию, выполнение через JDI)

-J<flag> передает опциюКлиент JShell JVM

-R<flag> передает опциюисполнительный механизм JVM

Локальное выполнение (--execution = "local")

-J<flag> передает опциютолько настоящий JVM

-R<flag> ничего не делает

 rmuller26 сент. 2017 г., 08:51
Вау, я действительно впечатлен твоим ответом. Спасибо!

используемых в обоих атрибутах для ответа на вопрос, чтобы полностью ответить на этот вопрос, отсюда и здесь это выражается словами.

-J Флаг используется для предоставленияаргумент времени выполнения к JShell, который похож на способ, который вы предоставляете при выполнении через IDE подВыполнить -> Конфигурация указать аргументы как-Dkey=value.

Использование атрибута задокументировано и очень похоже на показанные дляфлаг-C просто флаги -J вместоjava параметры командной строки, Например, используя-XX:+PrintCommandLineFlags будет детализировать флаги времени выполнения, используемые текущей JVM.

Таким образом, значения по умолчанию флагов командной строки, используемых вашим экземпляром JShell (без установки каких-либо дополнительных флагов), могут быть следующими:

Но скажем, вы не хотите использоватьCompactStrings Java9 в вашем исполнении JShell вы можете сказать JVM, используя-J флаг и-XX:-CompactStrings атрибут для этого, как -

jshell -R-XX:+PrintCommandLineFlags -R-XX:-CompactStrings

перечислил бы следующий вывод:

➜ похожиеjava Параметры / флаги командной строки, когда они присоединены и используются для запуска JShell на удаленной JVM, связаны с-R атрибут JShell при удаленном выполнении.

jshell -R-XX:+PrintCommandLineFlags -R-XX:-CompactStrings

Анатолииответ к нему приложено немало исследований, и я бы посоветовал прочитать его, чтобы понять механизм управления и исполнения JShell для локального и удаленного выполнения.

Ваш ответ на вопрос