标签: jvisualvm

如何让 jVisualVM 显示更长的时间范围?

我正在尝试使用 jVisualVM 来监视我正在开发的一些应用程序的长期堆使用情况。目前,它仅在“监控”选项卡下显示过去一小时。有什么方法可以让我查看更长的时间范围,甚至更好,有什么方法可以从头到尾查看它?

如果这不能在 jVisualVM 中完成,是否有替代方案的建议?

monitoring jvisualvm

5
推荐指数
0
解决办法
2378
查看次数

当我在 jvisualvm 中转储堆时,如何删除对 Runnable 的“Java Frame”GC Root 引用?

我用来jvisualvm检查应用程序中的内存泄漏。当我进行堆转储时,有时会出现几个本应被垃圾收集的对象处于打开状态。

当我对它们执行“显示最近的 GC Root”命令时,它显示根是我定义的一个类,它实现了 Runnable 接口。参考文献被列为(java frame),我知道这与线程有关。当我展开该节点的树时,它会打开并显示<no references>。因此,很明显,这不是我公开的参考资料,而是 Java 内部的东西。

jvisualvm 中列出的 GC Root 对象的类型AnalyticNode extends NodeNode implements Runnable。尽管使用了“框架”一词,但该根对象与 AWT、Swing 或任何重量级用户界面组件没有任何关系。在这种情况下,“框架”一词指的是线程。

那么,Java 是否会在某个地方保留对最后一个 Runnable 的引用,以使其保持打开状态?有什么方法可以告诉 Java 释放此引用,以便可以为我的堆转储正确收集它的垃圾吗?

这里发生了什么?

java garbage-collection memory-leaks jvisualvm

5
推荐指数
1
解决办法
3474
查看次数

如何使 Java VisualVM 以人类可读的格式显示数字?

是否有任何设置可以配置以使 jvisualvm 以人类可读的格式显示内存和其他数字,即以 MB 为单位而不是以字节为单位等。

我确实进行了调查,但没有找到任何结果。

java visualvm jvisualvm

5
推荐指数
0
解决办法
528
查看次数

将 JVisualVM 连接到远程 Wildfly 实例?

我正在尝试将在本地计算机上运行的 JVisualVM 连接到运行 WildFly 服务器(具体来说,版本 8.1.0)的远程计算机。

我自己没有配置 WildFly 服务器,我也不知道是谁配置的,但我知道我可以通过将浏览器指向以下位置,以管理用户身份从本地计算机登录:

https://[ip address of the remote machine]:9443/console
Run Code Online (Sandbox Code Playgroud)

请注意,它是https,而不是普通的 http ,并且其端口已设置为9443(我认为默认值是 8080 或 9990 或其他... IDK,我在网上看到了很多端口号。有人明确告诉我该 WildFly 服务器禁用了 http)。

我可以通过 SSH 连接到远程计算机。我可以导航到binWildFly 的目录并运行jboss-client.sh. 我必须连接端口9999(我认为默认端口是 9990?)

我将jboss-client.jar(在 下bin/client)复制到本地计算机并从命令行运行 JVisualVM,如下所示:

.\jvisualvm.exe -cp:a C:\[path to]\jboss-client.jar
Run Code Online (Sandbox Code Playgroud)

它启动良好。File > Add Remote Host: 然后我输入IP。OK。我在树中的 Remote 下右键单击它并选择Add JMX Connection。我进入了

service:jmx:http-remoting-jmx://[ip]:9999
Run Code Online (Sandbox Code Playgroud)

我勾选了我想要使用安全凭证并输入了用户名和密码。勾选以保存安全凭证。未选中“不需要 SSL 连接”。打OK。它立即吐出了消息

无法连接到admin@service:jmx:http-remoting-jmx://[ip]:9999使用service:jmx:http-remoting-jmx://[ip]:9999

我还尝试了端口 …

java visualvm jvisualvm wildfly

5
推荐指数
1
解决办法
8396
查看次数

二手 vs Max vs Size -Jvisualvm?

在 jvisual vm 中,我在 Monitor>Heap 下看到三个属性,我看到 3 个属性描述了内存详细信息,所有属性都具有不同的数字

  1. 尺寸 : ?
  2. 使用过的:-我相信这是实际使用的内存
  3. Max :- 我相信这是分配给 java 进程的最大堆大小(用 Xmx 指定)

我不确定实际描绘的尺寸是多少?

java memory performance heap-memory jvisualvm

5
推荐指数
1
解决办法
1873
查看次数

How to enable tracing profiling in jvisualvm?

I've read that jvisualVm can do tracing profile.

So I ran jvisualVm on my local pc and I see following: 在此输入图像描述

According the materials I read that jvisualVm allows to use tracing profiling on Profiler tab and it must look like:

在此输入图像描述

But as you can see I don't have it. I tried to find button to show that tab but I was not successful.

How can I enable it?

P.S.

According the @Alexandar Petrov answer I tried to add plugun manually …

java debugging trace profiling jvisualvm

5
推荐指数
1
解决办法
1157
查看次数

为什么我不能将jvisualvm附加到从osx内部启动的tomcat实例?

我从netbeans里面开始tomcat.我想监视tomcat实例上的堆使用情况,以便启动jVisualVM.但是,该过程未列出.有任何想法吗?

java netbeans jvisualvm

4
推荐指数
1
解决办法
1468
查看次数

Java内存使用/线程池性能问题

这些事情显然需要仔细检查和提供代码,以便彻底分析并提供好的建议.然而,这并不总是可行的,我希望根据我在下面提供的信息为我提供好的提示.

我有一个服务器应用程序,它使用侦听器线程来侦听传入的数据.传入的数据被解释为特定于应用程序的消息,然后这些消息会引发事件.

到目前为止,我对事情的完成方式并没有任何控制权.

因为这是遗留应用程序,所以这些事件之前由同一个侦听器线程(主要是单线程应用程序)处理.事件被发送到黑盒子,然后输出应该写入磁盘的结果.

为了提高吞吐量,我想使用线程池来处理事件.我们的想法是,每次创建事件时,侦听器线程都可以生成新任务,并且线程将负责黑盒调用.最后,我有一个后台线程执行写入磁盘.

只需使用以前的设置和后台编写器,一切正常,吞吐量比以前增加了1.6倍.

当我添加线程池但性能下降.一开始,一切似乎都运行顺利,但过了一段时间,一切都很慢,最后我得到OutOfMemoryExceptions.奇怪的是,当我每次将一个任务添加到池中时打印活动线程的数量(以及有关排队多少任务的信息等等),看起来好像线程池没有问题跟上producer(监听器线程).

使用top -H检查CPU使用情况,它在开始时非常均匀分布,但最后工作线程几乎没有活动,只有监听器线程处于活动状态.但它似乎没有提交更多任务......

任何人都可以假设这些症状的原因吗?您是否认为遗留代码(我无法控制)中的某些内容更可能在添加多个线程时变坏?内存不足问题应该是因为某个队列某处变得太大,但由于线程池几乎从不包含排队任务,所以不可能.

欢迎任何想法.特别是关于如何更有效地诊断这种情况的想法.如何更好地了解我的线程在做什么等等.

谢谢.

java memory performance visualvm jvisualvm

4
推荐指数
1
解决办法
3498
查看次数

因线程交换而导致滞后

在我正在开发的游戏中,我遇到了一些最近的滞后峰值.它是一致的,大约在同一时间发生.使用java profiler jvisualvm我发现它发生在特定线程似乎重启或同时(AWT-EventQueue-0):

线程更换频道的图像

除此之外,没有明显的原因,不是堆使用,处理器使用,内存空间或方法使用.它有时会导致ConcurrentModificationException绘制我的对象数组时,但这应该只会发生很大的延迟,而且我的游戏几乎没有密集.

我不记得最近对该项目进行了任何更改,但是我最近进行了以下操作:

  • 将java更新到最新版本
  • 下载最新版本的JDK7(虽然它没有在这个项目中使用)
  • 修复了由于安装JDK7而导致的eclipse错误(在eclipse.ini中删除了256m限制)

我在32位XP上运行Eclipse Indigo-service-1.我的处理器几乎没用过.

java eclipse multithreading jvisualvm awt-eventqueue

4
推荐指数
1
解决办法
696
查看次数

使用IntelliJ和Debug进行VisualVm的分析

我想描述IntelliJ启动的测试应用程序.对于分析,我使用了VisualVm.

我用参数启动了java工具-J-Dorg.netbeans.profiler.separateConsole=true.

我使用VM参数启动了应用程序-Xverify:none,否则如果我开始分析,VisualVM会抛出错误(重新定义失败,错误62)

我想在执行任何重要代码之前分析我的应用程序,所以我尝试设置一个断点并在VisualVM中开始分析.问题是当我在断点处等待时,VisualVm不响应任何交互.我错过了什么吗?

在正常执行(没有调试)中,我的程序等待输入,所以我可以在不调试的情况下对其进行分析.但是如果一个程序没有这样的"等待点"呢?

我的测试应用程序看起来像:

package my.visualvm.example;

import java.util.Scanner;

public class MainClass {

    public static void main(String[] args) {

        System.out.println("Starting Application: " + MainClass.class.getSimpleName());

        Scanner scanner = new Scanner(System.in);

        while (scanner.hasNext()) {
            double value = scanner.nextDouble();
            if (value == 0d) {
                break;
            }
            System.out.println(Powa.powaPowa(value));
        }

        System.out.println("Stopping Application: " + MainClass.class.getSimpleName());
    }

}
Run Code Online (Sandbox Code Playgroud)

其他课程:

package my.visualvm.example;

final class Powa {

    private Powa() {
    }

    static double powaPowa(double powa) {
        return Math.pow(powa, 2);
    }
}
Run Code Online (Sandbox Code Playgroud)

java debugging visualvm intellij-idea jvisualvm

4
推荐指数
1
解决办法
1480
查看次数