问题标签 [jvisualvm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1023 浏览

jmx - JConsole 如何决定使用 JMX 键呈现树的顺序?

在 JConsole 中查看 JMX bean 时,它会将给定域部分下的所有 bean 呈现为层次结构。(JVisualVM 与 JConsole MBeans 插件具有相同的行为。)

我意识到 JMX 对象名称不是分层的,但是 JConsole 以某种顺序选择键,以便它可以分层呈现它们。

有人知道它使用什么规则来订购钥匙吗?它似乎不是从左到右或按字母顺序排列的。

谢谢。

0 投票
1 回答
15692 浏览

java - visualvm 可以通过 JMX 自动连接到远程进程吗?

我有一个在远程机器上运行的 Java 进程,该进程设置了一些 mbean。我也在jstatd该机器上以与 Java 进程相同的用户身份运行。(可以以编程方式或使用等方式设置 mbean -Dcom.sun.management.jmxremote...,这似乎没有什么区别)。

VisualVM 能够与jstatd它自动发现的进程建立连接,但这意味着我无法访问 mbean 或例如 CPU 历史图表。或者,我可以创建一个显式 JMX 连接,这为我提供了通常范围内的有用工具,但我希望在应用程序启动时为其分配一个随机 JMX 端口,此配置不能是静态的。

有什么方法可以让 VisualVM 通过 JMX 自动连接到我的进程?这将要求它自动发现 JMX 端口,但我认为jstatd可以做到这一点。有谁知道 Visualvm 的任何插件可以自动执行此操作?

0 投票
3 回答
644 浏览

jvm - 什么启动 JVM 线程?

(如果我错了请纠正我)

我了解当您通过发出 java 命令运行 java 程序时,

该程序将在新的 JVM 上运行。

  • 什么将程序加载到新的 JVM 中?是产生新线程的JRE吗?

  • 如果每个程序都运行在自己的 JVM 中,它们是否可以相互通信?

  • 我之前问过一个关于如何使用 JMX 向本地运行的 java 程序发送请求的问题。我发现如果 JMX 命令是在本地发出的,我不需要端口号。答案是客户端应用程序(例如 jconsole、jvisualvm、jprobe 等)搜索机器上运行的 java 应用程序。这很好,但考虑到客户端应用程序将在与其想要监视或与之通信的应用程序不同的 JVM 中运行,它们如何在没有端口号的情况下相互连接(因为它们没有在同一个 JVM 上运行)?

  • 如果两个程序正在运行,通常会有 2 个 JVM。JVM 是否在同一个 JRE 进程中运行?而且这是否意味着两个 JVM 应该能够通信?

谢谢

0 投票
1 回答
1534 浏览

java - JBoss 4.2.0 (EAP) 的 JMX 问题?

我在让远程 JMX 在 JBoss 4.2.0,EAP 版本下工作时遇到了一些问题。我的应用程序中有一些 Java OOM 错误,我正在尝试专门设置它以针对它运行 VisualVM。

JBoss 针对 JDK 1.5 运行

我试图通过在启动时将以下内容添加到我的 JAVA_OPTS 来使其正常工作(为了便于阅读,此处使用换行符):

当我启动 JBoss 时,我在 boot.log 中看到指示 JMX 在端口 6789 上启用并且 auth 和 ssl 设置为 false 的条目。但是,netstat 没有显示在端口 6789 上侦听的任何内容,并且我无法获得到该端口的 telnet 连接。毫不奇怪,VisualVM 也无法连接(本地和远程运行)。

JBoss 附带的默认 /jmx-console 上下文似乎可以正常加载,如果这很重要的话。

我在这里缺少什么吗?是后来添加了远程 JMX 支持还是什么?

编辑:我忘了提到 JBoss 正在使用 SSL 连接器运行,因此例如我通过https://localhost:8888/jmx-console 访问 jmx-console。也许这对 JMX 连接有影响?

0 投票
1 回答
1055 浏览

java - VisualVM CPU 分析是否可以在 Mac 上运行?

我正在尝试使用 VisualVM 在具有 64 位 VM 的 Mac 上进行分析,但没有成功。

它似乎只以很长的间隔更新(我认为它根本不会配置文件,直到我离开键盘十分钟,然后回来发现一个更新。我相信应该每 2 秒运行一次)。

大多数情况下,它只是与“尚无可用的分析信息”消息一起出现。它工作的一次,总共发现了 4 个方法调用。在那个时间范围内会发生数百万。

应用程序退出时的快照显示了一些系统线程,但没有我的代码。

我没有更改任何默认设置。我已经检查过它不排除我的代码。

VisualVM 是否可以在 Mac 上运行以分析 64 位 JVM?

我已经尝试过最新 JDK 的 jvisualvm 和 java.net 的稍晚版本。

java 版本“1.6.0_22”Java(TM) SE 运行时环境(内部版本 1.6.0_22-b04-307-10M3261)Java HotSpot(TM) 64 位服务器 VM(内部版本 17.1-b03-307,混合模式)

系统版本:Mac OS X 10.6.4 (10F569)

有什么想法吗?对你起作用吗?

谢谢!

0 投票
1 回答
2817 浏览

java - 无法使用 jvisualvm 分析 JBoss 5

我在java.lang.OutOfMemoryError: GC overhead limit exceeded一夜之间运行我的 Java 应用程序时遇到了一些错误:

如果我打开 jvisualvm,我可以看到我确实没有堆空间:

监视器

我想对其进行分析以试图弄清楚发生了什么 -是否存在内存泄漏?等等。但是,我根本无法让 jvisualvm 分析器做任何事情。该Profiler选项卡显示有关启用类共享的警告:

剖析器

...即使我已将-Xshare:off标志添加到我的 VM 参数中:

概述

所以,

  • 关于如何让分析工作的任何想法?
  • 是否值得玩G1GC而不是......我目前使用的任何GC?
0 投票
3 回答
3431 浏览

java - jvisualvm - 自动(JMX)重新连接到应用程序?

有没有办法在 jvisualvm 中重新连接断开的 JMX 连接?当监控的启用 JMX 的应用程序重新启动时,我必须重新启动 jvisualvm 才能重新连接它。我错过了什么吗?

这是我的 jvisualvm 详细信息:

版本:1.6.0_22(内部版本 100326);平台 091221-4fc006d17cb1
系统:Linux(2.6.35-23-generic),amd64 64bit Java:1.6.0_22;Java HotSpot(TM) 64 位服务器 VM(17.1-b03,混合模式)

0 投票
1 回答
4111 浏览

java - 如何在 Visualvm 中查看 Web 应用程序数据

我正在尝试使用 JDK 附带的 visualvm 程序来分析在 Tomcat 中运行的 webapp。我连接没有问题,一切看起来都很好,并且在 GUI 中正常工作,除了我的类没有显示。分析时,使用 CPU 屏幕,我只看到 catalina 和列出的其他几个类的方法。如何让 visualvm 显示 Tomcat 正在运行的 web 应用程序的方法调用(而不仅仅是 Tomcat 本身)?

如果有帮助:这是 Tomcat 6.0.26 和 JDK 1.6.0.22

0 投票
2 回答
5252 浏览

java - jvisualvm 活动对象和分配对象之间的区别

如这里的屏幕截图所示,0 个活动对象,9 个已分配对象。活动对象和分配对象有什么区别?

jvisualvm 截图

0 投票
2 回答
27177 浏览

process - jvisualvm 没有列出某些 Java 进程

我想获取某个 Java 进程的堆转储(疑似内存泄漏)。但是,当我启动 jvisualvm 工具时,我看不到任何正在运行的 Java 进程。

我已经在 Google 上搜索过,并且已经找到几篇文章说您必须使用与启动 jvisualvm 工具相同的 JDK 运行 Java 进程,以便它能够看到它们。但是,据我所知,情况已经如此。我在本地做所有事情(我可以​​远程访问机器)。

有几点需要考虑:

  1. 这些进程在防火墙的 Windows 2008 服务器上运行
  2. 这些进程正在使用重命名的 JDKjava.exe可执行文件版本运行
  3. 据我所见,进程正在使用 1.6.0_18 JDK 运行
  4. 正在运行的进程之一启动 RMI 注册表

我正在等待服务器的虚拟化副本,以便我可以处理它(这是一个生产服务器)。但与此同时;关于为什么我看不到 jvisualvm (或 jconsole )中的任何进程的任何想法?