gpt4 book ai didi

runtime - jshell 中 J 和 R 标志的确切含义/目的是什么?

转载 作者:行者123 更新时间:2023-12-04 11:47:46 24 4
gpt4 key购买 nike

从帮助信息:

-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

我在 tools documentation 中都找不到解释。和 jshell user guide .

另外,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 类源代码)。

    更接近正题。我用 -verbose 做了几个实验选项并使用 ManagementFactory.getRuntimeMXBean().getInputArguments() 在运行时检查 JVM 选项.
  • 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; 博士

    远程执行(默认情况下,通过 JDI 执行)
    -J<flag>将选项传递给 JShell 客户端 虚拟机
    -R<flag>将选项传递给 执行引擎 虚拟机

    本地执行(--execution="local")
    -J<flag>将选项传递给 仅存 虚拟机
    -R<flag>什么也没做

    关于runtime - jshell 中 J 和 R 标志的确切含义/目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46399679/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com