内存分析器(检测和监控工具)如 VisualVM 和 jProfiler 通过 JMX 扩展连接到 Java 应用程序的 JVM(尽管可能有其他连接方式 - 如 jstatd 等,我已经看到 JMX 很常见)
我对 JMX 的理解:
默认情况下,JMX 必须公开其默认端口(不确定是否有默认端口号),以便内存分析器可以连接。因此,我假设当多个 Java 应用程序使用默认 JMX 配置运行时,在同一台机器上,一定存在 JMX 端口冲突。
但我从来没有注意到这一点。我已经看到 Java 应用程序在默认配置下愉快地运行,并且 Mem Analyzers 可以同时愉快地与这些 Java 应用程序中的每一个连接。所以我对 JMX 端口的理解并不完全正确。有人能说一个以上的 Java 应用程序如何能够在同一台机器上同时公开具有默认配置的 JMX 功能。 (???? 是 JMX 为每个 Java 应用程序使用的随机端口????)
最佳答案
VisualVM 等工具将 JMX 与 Dynamic Attach mechanism 一起使用监视本地 Java 虚拟机。
显然,不同的本地 JVM 在不同的端口上启动 Management Server,但 VisualVM 通过动态连接发现端口号。
关于java - 为什么即使机器上运行了多个 java 应用程序也没有 JMX 冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63729805/