问题标签 [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 回答
1802 浏览

java - 使用 AsyncHttpClient 和 Quartz Job 运行的线程

这是一个简单的 Quartz 调度程序,它应该每分钟运行一次作业;作业本身使用 Sonatype Async Http Client发出 HTTP 请求。使用jvisualvm,我能够检测到线程正在产生并且永远不会关闭,例如它们被卡在wait中。这让我相信,要么 A)我误解了 Quartz 如何在这个特定的设置下工作,要么 B)有其他问题。可能是 A :) 调度程序:

工作:

真的没什么。如果我对活动线程进行分析,则在 2 分钟后,这种侵占就会很明显。首先是 24,然后是 27、30……等等。在此处输入图像描述

编辑

我能够验证它是 AsyncHttpClient 和 Quartz 的组合,就像我makeRequest用标准请求换出方法时一样:

一切都按预期工作。

0 投票
0 回答
1551 浏览

java - TraceClassloading 显示的已加载类中的重复项

为了在我们的 Tomcat tomcat-6.0.28 开发环境中跟踪永久空间 OOM,我们添加了 TraceClassloading、TraceClassUnloading 和 JMX 监控。服务器有三个 web 应用程序(devapp1、2、3),它们具有几乎相同的框架和库(Spring、Hibernate、Axis 等)。我希望每个应用程序的每个类都只加载一次,但是 traceclassloading 日志显示每个 webapp 加载两次相同的类。

示例(实际日志条目随着时间的推移而分散,为清楚起见将它们组合在一起)

但是,JVisualVM“总加载”计数似乎接近计算值(~18700),并且不显示重复。MaxPermSize 设置为 128M,现在在服务器运行一天后徘徊在 119M 左右。请让我知道什么可能导致 TraceClassLoading 和 JVisualVM 计数之间的这种差异,以及如何确认占用的 permgen 空间是否包含重复项?

0 投票
3 回答
7210 浏览

java - jvisualvm 的代理配置问题

我已经尝试在我的 JDK (1.6.0_15-b03) 中使用 jvisualvm.exe 来重新加载插件目录,方法如下

工具 > 插件 > 更新 > 重新加载目录

然而; 无论我尝试什么代理配置(我也尝试在另一个 JVM 1.6 update 23 上对其进行测试)并且似乎都不起作用。无论我的代理设置如何,我都会收到以下错误。

无法连接到 Java VisualVM 插件中心,因为 sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

这是出现的错误窗口[请参阅附图]证书错误

这是一个已知问题还是某些认证问题?我从来没有在我的机器上创建过信任库,这可能是个问题吗?

0 投票
1 回答
5302 浏览

java - JVisualVM 无​​法使用 --openpid 参数连接到进程

我有一个作为 win 服务运行的应用程序(使用Apache-Procrun)。我想用 JVisualVM 监控那个应用程序。我使用命令行参数--openpid <PID>没有成功,具有讽刺意味的是,旧的 JConsole 设法连接到该应用程序。

JVisualVM 与 JConsole 0:1

我还检查了 JVisualVM-故障排除指南%TMP%\hsperfdata_username中描述的 -Directory 的所有问题。一切都很好。

如何让 JVisualVM 监控我的应用程序?

0 投票
1 回答
1561 浏览

java - VisualVM 连接到本地 TomEE 非常慢并且无法进行堆转储

我在 MAC OSX 山狮上遇到了 TomEE 1.5.1 和 VisualVM 1.7.0_09 的一个非常奇怪的问题。

TomEE 加载一些 webapp 后。使用 VisualVM 连接本地 TomEE 进程需要很长时间,连接后 gc 按钮被禁用,我无法进行堆转储。VisualVM 的日志显示一些错误。

.java_pid<pid>文件未在 tmp 文件夹中创建。

但是如果我在启动它之后和加载任何 webapps 之前使用 VisualVM 连接 TomEE,.java_pid<pid>文件将创建,VisualVM 将立即连接到它,并且堆转储工作。

另一种解决方法是修改 catalina.sh 以将 tools.jar 添加到 ClassPath 并删除 openejb javaagent,然后在 TomEE 完全启动后连接工作正常。

无法在 ubuntu 机器上重现。

0 投票
1 回答
1794 浏览

java - 使用 Jvisualvm 检测内存泄漏

我的 java jar 只是大型程序使用的众多 jar 之一。我正在尝试确定我的代码是否是导致内存泄漏的原因,或者我的代码之外是否还有其他问题。我正在使用 jvisualvm,并且已经确定了我所有的课程,而且似乎没有一个是可疑的。查看采样器,我可以看到就大小和创建的实例而言,byte[]、char[] 和 int[] 似乎是最大的用户。问题是,我无法确定他们属于谁。我知道我的程序中有各种 byte[],但是由于有大约 32,000 个实例,因此很难逐个确定来源。有没有办法过滤数据,以便只能查看来自某个罐子或区域的项目?谢谢。

0 投票
1 回答
538 浏览

visualvm - 使用 --openjmx 时命名 JMX 连接

我正在使用 Java Visual VM 命令行打开远程 JMX 连接。我这样使用它:

这工作得很好。但视图中的连接名称显示为hostname:port。有什么办法可以将逻辑名称传递给这个连接?我可以从视图重命名连接,但是当我重新打开时它不会粘住。我有大约 10 个来自同一个主机名的连接,所以想从逻辑上分离出各个连接。

有任何想法吗?如果可以将名称粘贴在用户配置中,它甚至会起作用。

0 投票
3 回答
881 浏览

java - JVisualvm:应用程序终止后如何进行堆转储?

我搜索了它,但在应用程序终止后没有找到任何方法来获取堆转储。

从 eclipse 我触发了使用 eclipse 插件开发创建新项目的过程。在代码级别,我有两种创建新项目的方法。我想比较这两种方法。

我使用 JVsualVm 来分析在创建新项目生成过程中生成的数据。

当我的进程以执行结束时,我想对该正在运行的应用程序进行堆转储。

但问题是运行进程停止后,它正在从 JvisulaVM 的应用程序视图中删除,我无法对其进行堆转储。

那么有什么方法可以从 JVisualVm 中获取已停止应用程序的堆转储,因为我仍然打开了该正在运行的应用程序的选项卡,但该应用程序已从应用程序视图树中删除。

0 投票
1 回答
753 浏览

eclipse - java VisualVM下如何执行eclipse

我为我的项目开发了几个插件,我认为我有一些漏洞,因为我的 Eclipse 在长时间使用后会变慢,所以我想对其进行分析。我可以从 Eclipse 运行 Eclipse(在插件开发模式下)并将其连接到 JVM,但是在长时间的“正常”开发之后会出现问题(缓慢的 Eclipse),所以我想启动我的“正常”Eclipse 并连接到 VisualVM。问题是eclipse出现在VisualVM中,我无法以任何方式分析它(我只看到加载的类、堆和线程的数量)。

我的 JAVA_HOME 设置为 JDK,我将相同的 JDK 放在 -vm 参数下的 eclipse.ini 中,并从同一个 JDK 启动 VisualVM。

有人知道我该怎么做吗?

0 投票
5 回答
119821 浏览

java - 如何从命令行检查正在运行的 JVM 的堆使用情况?

我可以从命令行检查正在运行的 JVM 的堆使用情况吗?我指的是实际使用情况,而不是 Xmx 分配的最大数量。

我需要它是命令行,因为我无法访问窗口环境,并且我想要基于 value 的脚本,应用程序在 Jetty Application server 中运行