rmu*_*ler 7 runtime java-9 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
Run Code Online (Sandbox Code Playgroud)
我在工具文档和jshell用户指南中都找不到解释.
另外,什么是jshell上下文中的"远程运行时系统"?
据我了解,JShell有3个主要的“地方”来执行代码:
在当前过程中(请参阅DirectExecutionControl)
在与JShell客户端相同的JVM中(请参阅LocalExecutionControl)
在远程代理上(请参阅JdiDefaultExecutionControl)
使用jshell工具,我们在启动之前没有当前进程,因此我们只有两个选择-使用一个JVM(本地),或使用两个JVM-一个用于JShell客户端(本地),另一个用于执行引擎(可能远程)。
有趣的是,默认情况下,JShell始终启动两个JVM,因为硬编码的--execution键是"failover:0(jdi:hostname(" + loopback + ")),1(jdi:launch(true)), 2(jdi)"(请参见JShell类源代码)。
言归正传。我已经使用-verboseoption 进行了一些实验,并在运行时检查了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输入参数中的Printed 选项:[-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:63339, -verbose]
jshell --execution="local" -J-verbose 命令
-verbose在控制台中打印输出。
-verbose输入参数中的Printed 选项:[-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]
-J<flag>将选项传递给JShell客户端 JVM
-R<flag>将选项传递给执行引擎 JVM
-J<flag>将选项传递给唯一存在的 JVM
-R<flag> 什么也没做