【问题标题】:jcmd - Handle custom commands in running JVMjcmd - 在运行的 JVM 中处理自定义命令
【发布时间】:2018-04-11 06:57:26
【问题描述】:

jcmd 实用程序提供多个诊断命令: https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html

是否可以有自定义命令并在运行的 JVM 中处理它们?

类似:jcmd $PID myCmd

【问题讨论】:

  • 为什么不JMX
  • 公平点,这对于 JMX 是可行的。我担心的是 1) 需要在目标 JVM 上启用 JMX 2) 只能通过 JVM 语言连接到 JMX,afaik。可以从用 C、Go 编写的小型命令行工具调用 jcmd。

标签: java jvm jcmd


【解决方案1】:

jcmd 仅处理预定义的 JVM 命令列表。但是,有多种方法可以在没有jcmd 的情况下实现自定义管理命令。

  1. 简单的就是在JVM里面打开一个socket来监听传入的控制消息。
  2. 或者,您可以使用动态附加机制将代理库加载到正在运行的 JVM 进程中。 Java APInative interface 都可以这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多