问题标签 [visualvm]

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 投票
7 回答
6844 浏览

java - 像 VisualVM 这样的软件的替代品,通过搜索堆转储以编程方式查找正在运行的 java 应用程序的值等?

我没有使用 java 应用程序的经验,但我发现找到指向这些应用程序内存地址的静态指针等通常(几乎)不可能,显然是因为处理代码的 java 引擎(如果这种命名方式,请纠正我)错了请)。

现在,我使用了 VisualVM ( https://visualvm.dev.java.net/ ),它很棒。我可以选择我的 java 进程并创建一个堆转储。然后它向我显示所有类及其值。

我可以使用这种方法不断轮询堆转储并接收对象值,例如游戏的 XY 和 Z?我将如何以编程方式与此类应用程序交互,如果这不应该使用 VisualVM 完成,还有什么替代方案?

编辑:这是我需要做的: 我需要能够找到所有具有特定值的属性的类。例如:我会搜索 X 坐标(一个浮点数),它应该返回类“PlayerCoordsHandler”(只是一个例子)和相应的浮点数及其值......或者只是一种再次找到这个相同浮点数的方法(例如重新启动后)。这个过程不必是编程的,只要请求现在已知的属性(x float)的值可以通过编程(例如使用命令行实用程序或从文件读取)来检索。

Edit2: 目标应用程序是 Windows 可执行文件(但使用 java 制作)并启动它自己的 java VM。无法添加用于调试的 java 参数。但这似乎不是必需的,因为 VirtualVM 能够很好地调试该过程。有谁知道怎么做?

提前致谢。

0 投票
3 回答
17042 浏览

java - 将 visualvm 连接到 websphere 7

我正在尝试让 visualvm 和 websphere 7 在我的本地 Windows 桌面上一起工作。我尝试通过 JMX 连接,但没有运气。有没有人设法让visialvm和websphere 7工作,你是怎么做到的?

问候FF

0 投票
10 回答
19006 浏览

java - 仍然无法通过 VisualVM 远程连接 Tomcat 6

如果检查了有关此问题的其他问题,但到目前为止还没有灵魂。这是我的设置:TC6 在我的 macbook 上的 debian vm 上运行。在 /etc/default/tomcat6.0 我设置了以下选项:

netstat -ntlp 给了我:

其中 6550:

防火墙:

当我尝试使用 jvisualm 从 OSX 连接时: - 添加一个带有我的 vm 主机名的新主机(将其添加到 /etc/hosts) - 添加一个新的 JMX-Connection

VisualVM 失败并显示:

当我使用连接到我的 VMssh -X并在运行 tomcat 的同一台机器上启动 jvisualvm 时,我最初看不到 TC,但我可以像上面一样添加 jmx 连接。

这可能是外国主机被神秘地阻止访问 rmiregistry 的问题吗?为什么会有人做这种蠢事?

我究竟做错了什么?

(抱歉 4 帖子太长了)

0 投票
1 回答
1089 浏览

osx-snow-leopard - VisualVM 无​​法连接到 Snow Leopard 上的任何 PID?

无论我启动什么,Visual VM 都会在我的 Mac 上为我提供“未知应用程序”和“不支持此 JVM”。

我已经尝试过 JBoss、Jetty、Eclipse - 只是想看看它是否能够识别/分析任何东西,到目前为止,nada。

$ java -version java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04-248-10M3025) Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01-101, 混合模式) )

在雪豹上奔跑。我已经尝试使用默认的视觉 vm(似乎是 1.0)和从https://visualvm.dev.java.net/download.html新下载的版本。

我似乎也无法让 jconsole 连接到任何东西,我认为这两者是相关的。我按照建议使用“-Xshare:off”来防止崩溃,但无论如何我都无法连接,所以这没有实际意义。

我还验证了 Visual VM 和这些其他应用程序是从同一个 JVM 运行的:

VisualVM:010-03-23 13:35:09 全线程转储 Java HotSpot(TM) 64 位服务器 VM(14.3-b01-101 混合模式):

JBoss:2010-03-23 13:35:57 全线程转储 Java HotSpot(TM) 64 位服务器 VM(14.3-b01-101 混合模式):

我不知道出了什么问题。有人有想法么?

0 投票
2 回答
1743 浏览

java - 解释 VisualVM 分析会话的结果

我有一个应用程序,它在 Mac OS X 上使用这个jdbc 驱动程序将一些数据(80k 元组中大约 15mb)写入 SQLite 数据库。这是使用事务完成的,其中最大的事务包含大约 45k 插入到一个表中。在分析应用程序时,有几件事情看起来很奇怪:

  1. 如果我在开始时使用 暂停应用程序System.in.read(),则进程分配的内存会保持缓慢增长。这是为什么?
  2. 当应用程序运行时,在 VisualVM 监视器中使用的堆空间总是在 80mb 左右。但是,在分析内存使用情况时,我总共得到大约 10mb。谁能解释这个区别?

谢谢你的帮助。

0 投票
1 回答
8042 浏览

java - Windows Server 2003下如何在本地系统账户下运行jvisualvm.exe?

我在带有 Java 1.6 u 20 的 Windows Server 2003 下将 GlassFish 3.0.1 作为 Windows 服务运行,并且总体上很满意。

我希望能够在此 JVM 上使用 VisualVM 并使用Unable to use JConsole with Tomcat 作为 Windows 服务运行作为起点,但从

导致 jvisualvm.exe 和 nbexec.exe 进程以 SYSTEM 作为用户出现在任务管理器中,但我没有像我自己手动运行它时那样从程序中看到任何 GUI。我从 Windows 7 使用远程桌面登录,以防万一。

其他有趣的点:

报告已添加新作业,但未在 10.55 打开 CMD 窗口。

如何将 VisualVM 注册为服务的描述报告服务已启动,但没有显示 GUI。 http://blogs.oracle.com/nbprofiler/entry/monitoring_java_processes_running_as

有人让它在 Windows Server 2003 下运行吗?

0 投票
1 回答
1084 浏览

java - 如何将 Java Agent 打包为 Visual VM 插件

我编写了一个 Java 代理以及一个用于控制代理的 SWT GUI。

https://github.com/mchr3k/org.intrace/wiki

我想将此库打包到 VisualVM 的插件中,以允许使用 VisualVM 将代理附加到 JVM。

我在这里编写了一个 Netbeans 模块来执行此操作:

http://github.com/mchr3k/org.intrace/tree/master/InTrace-VisualVM-Plugin/

这在我从 Netbeans 运行项目时有效。但是,当我使用“创建 NBM”打包项目时,生成的库无法在 VisualVM 中安装。日志的输出如下:

我还怀疑我的代理和客户端库没有打包到 nbm 文件中,因为它太小了。

我怀疑问题是我需要在项目 build.xml 中添加一些东西,但我正在努力解决什么问题。

http://github.com/mchr3k/org.intrace/blob/master/InTrace-VisualVM-Plugin/build.xml

谁能建议我缺少什么?

0 投票
5 回答
11239 浏览

java - 衡量 Java 程序内存使用情况的最佳方法是什么?

我目前正在使用VisualVM,但我遇到的问题是我无法保存它生成的图表。我需要报告一些关于它的内存使用和运行时间的数据,虽然运行时间很容易得到System.nanoTime()。我也尝试过NetBeans 分析器,但这不是我想要的,因为我不是在寻找会减慢它的特定部分或任何东西,所以这将是矫枉过正。它最大的问题是它占用了太多的处理时间。至少据我所知,我也不像 VisualVM 那样轻松地捕获/传输数据。

理想情况下,最好的方法是调用一些方法,因为这样我就可以更轻松地获取信息,但是像 VisualVM 这样实际上可以让我保存图形的任何东西都很好。与 NetBeans 分析器相比,VisualVM 的性能也相当不错,但我想那是因为我没有使用它的分析器。

我目前正在使用 Ubuntu,但 Windows 7 很好。不过,我宁愿有一个专门从事此工作的程序,因为不这样做的程序获得的信息可能包括 JVM 和其他最好省略的东西。

好吧,显然,您可以保存当前会话的快照并在 VisualVM 中最大化窗口,这样您就可以使图表更大,拍摄快照并剪切它们......但这是一种黑客行为。欢迎提出更好的建议。

0 投票
1 回答
6305 浏览

java - 将 Java VisualVM .nps 分析器数据导出到 excel

有什么方法可以将VisualVM捕获的 .nps 探查器数据转换为 excel。

即我想获得热点方法的表格视图。 替代文字

最后,我想知道是否有一种方法可以自动捕获 VisualVM 分析器统计信息(例如命令行脚本)并将其导出到 Excel(CSV 文件或其他文件),以便我们可以自动将其上传到 Google Docs 电子表格中。

似乎 VisualVM 只使用标准的HPROF cpu=samples,但它能够远程完成我只知道启用分析作为 JVM 参数。有什么方法可以从 JMX 触发它?

0 投票
1 回答
754 浏览

java - 我应该如何开始分析/优化我的 java 应用程序/oracle 数据库?

昨天我读到了一些关于应用程序优化的内容,以及程序员应该如何找到程序中最常用的部分,并通过分析和修改它们来获得最大的收益(在查看时间/工作投入与内存/速度增益时)。现在,我运行了 Eclipse 分析器,获得了 VisualVM,但我不知道如何正确使用这些数据。我主要关心的是内存使用(我正在生成一个 XML 并将其作为 zip 存储到磁盘或将其作为 zip 刷新给用户以供下载)和数据库的减速(我怀疑我的索引不存在或不好,无论如何,对它们了解不多,所以我不能告诉你更多:)但我什至不知道如何开始。对于第一种情况,VisalVM 显示程序最多使用 200MB,但是当我检查堆转储并单击最常用的对象(或它的名称)时,信息是压倒性的。对于第二种情况,我知道的更少,除了 Toad 有一些工具。

我想知道的是如何开始这样做,当我对本地性能感到满意时,如何在生产应用程序上进行。

Edit1:因此,对于内存使用的具体示例(我正在生成一个 XML 并将其作为 zip 存储到磁盘或将其作为 zip 刷新给用户以供下载)。这是我选择“堆转储”时得到的,然后按保留大小选择前 20 个对象并打开详细信息:堆转储屏幕截图

这就是我在同一个用例上打开 Profiler 时得到的结果:

替代文字

问题是,这个屏幕告诉我什么?:)