`
baorui945
  • 浏览: 7650 次
社区版块
存档分类
最新评论

VisualVM 使用实例

    博客分类:
  • tips
阅读更多

VisualVM概述

VisualVM 是一款免费的性能分析工具。监控程序运行的实时数据,从而进行动态的性能分析。同时,它能自动选择更快更轻量级的技术尽量减少性能分析对应用程序造成的影响,提高性能分析的精度。

 

知识点:

转储:性能分析工具从内存中获得当前状态数据并存储到文件用于静态的性能分析。

1     系统转储:JVM 生成的本地系统的转储,又称作核心转储。一般的,系统转储数据量大,需要平台相关的工具去分析,如 Windows 上的 windbg Linux 上的 gdb

2     Java 转储:JVM 内部生成的格式化后的数据,包括线程信息,类的加载信息以及堆的统计数据。通常也用于检测死锁。

3     堆转储:JVM 将所有对象的堆内容存储到文件。

 

快照:应用程序启动后,性能分析工具开始收集各种运行时数据,其中一些数据直接显示在监视视图中,而另外大部分数据被保存在内部,直到用户要求获取快照,基于这些保存的数据的统计信息才被显示出来。快照包含了应用程序在一段时间内的执行信息

1     CPU 快照:主要包含了应用程序中函数的调用关系及运行时间,这些信息通常可以在 CPU 快照视图中进行查看。

2     内存快照:主要包含了内存的分配和使用情况、载入的所有类、存在的对象信息及对象间的引用关系等。这些信息通常可以在内存快照视图中进行查看。

 

性能分析:性能分析是通过收集程序运行时的执行数据来帮助开发人员定位程序需要被优化的部分,从而提高程序的运行速度或是内存使用效率

1     CPU 性能分析:CPU 性能分析的主要目的是统计函数的调用情况及执行时间,或者更简单的情况就是统计应用程序的 CPU 使用情况。通常有 CPU 监视和 CPU 快照两种方式来显示 CPU 性能分析结果。

2     内存性能分析:内存性能分析的主要目的是通过统计内存使用情况检测可能存在的内存泄露问题及确定优化内存使用的方向。通常有内存监视和内存快照两种方式来显示内存性能分析结果。

3     线程性能分析:线程性能分析主要用于在多线程应用程序中确定内存的问题所在。一般包括线程的状态变化情况,死锁情况和某个线程在线程生命期内状态的分布情况等

VisualVM部署

下载VisualVM安装程序,解压到本地目录,到bin目录中执行jvisualVM.exe

PS

启动JvisualVM提示"无法检测到本地java应用程序"解决方式:

tmp目录中的hsperfdata_userName文件夹设置到ntfs文件格式的分区下即可

查看方式:%TMP%然后设置环境变量到新的目录即可

VisualVM监控界面

VisualVM内存、CPU、线程监控

内存分析

VisualVM 通过检测 JVM 中加载的类和对象信息等帮助我们分析内存使用情况,我们可以通过 VisualVM 的监视标签和 Profiler 标签对应用程序进行内存分析



 

Java堆内存溢出

java.lang.OutOfMemoryError: Java heap space

    at java.util.Arrays.copyOf(Arrays.java:2760)

    at java.util.Arrays.copyOf(Arrays.java:2734)

    at java.util.ArrayList.ensureCapacity(ArrayList.java:167)

    at java.util.ArrayList.add(ArrayList.java:351)

    at com.hongdian.demo.oome.OOMObject.createOOME(OOMObject.java:12)

    at com.hongdian.demo.oome.OOMObject.main(OOMObject.java:21)

 

Java栈和本地方法栈溢出

Exception in thread "main" java.lang.StackOverflowError

at com.hongdian.demo.oome.StackOverflowError.stackLeak

(StackOverflowError.java:8)

at com.hongdian.demo.oome.StackOverflowError.stackLeak

(StackOverflowError.java:8)

 

 

 

CPU分析

VisualVM 能够监控应用程序在一段时间的 CPU 的使用情况,显示 CPU 的使用率、方法的执行效率和频率等相关数据帮助我们发现应用程序的性能瓶颈



 

线程死锁

Java 语言能够很好的实现多线程应用程序。当我们对一个多线程应用程序进行调试或者开发后期做性能调优的时候,往往需要了解当前程序中所有线程的运行状态,是否有死锁从而分析系统可能存在的问题



 

 

线程死锁信息:DeadLock.java(网络转载)

Found one Java-level deadlock:

=============================

"Thread-1":

  waiting to lock monitor 0x02abed0c (object 0x22eda760, a baor.test.thread.Resource),

  which is held by "Thread-0"

"Thread-0":

  waiting to lock monitor 0x02abeca4 (object 0x22eda770, a baor.test.thread.Resource),

  which is held by "Thread-1"

 

Java stack information for the threads listed above:

===================================================

"Thread-1":

       at baor.test.thread.MyThread2.run(MyThread2.java:17)

       - waiting to lock <0x22eda760> (a baor.test.thread.Resource)

       - locked <0x22eda770> (a baor.test.thread.Resource)

"Thread-0":

       at baor.test.thread.MyThread1.run(MyThread1.java:17)

       - waiting to lock <0x22eda770> (a baor.test.thread.Resource)

       - locked <0x22eda760> (a baor.test.thread.Resource)

 

Found 1 deadlock.

 

 

 

 

 

  • 大小: 25.8 KB
  • 大小: 22.6 KB
  • 大小: 22 KB
分享到:
评论

相关推荐

    VisualVM 2.1.5 (visualvm-215.zip)

    在使用"visualvm_215.zip"解压后的文件中,通常会包含VisualVM的可执行文件和必要的库文件。用户可以直接运行该程序来启动VisualVM,并连接到本地或远程的Java应用进行分析。 总的来说,VisualVM是一个强大且全面的...

    visualvm中文版

    1. **内存分析**:VisualVM可以显示堆内存的详细信息,包括对象实例、类加载器、类的大小和数量等,帮助识别内存泄漏问题。 2. **CPU采样**:通过采样线程执行情况,可以发现CPU资源消耗较高的代码段,有助于定位...

    visualvm_203.zip

    点击"+"按钮,添加一个新的VisualVM实例,填写以下信息: - Name: 可以自定义,如"VisualVM 203" - Path to VisualVM: 指向之前解压的VisualVM的bin目录,例如"C:\Program Files\VisualVM_203\bin"。 - VisualVM ...

    VisualVM使用方法

    VisualVM提供了生成堆转储(Heap Dump)的功能,它能够帮助开发者获取JVM堆内存的快照,并提供内存中对象的详细信息,如类和实例的数量、占用堆空间的大小等。这有助于分析内存中的对象引用关系,以及是否存在内存...

    Visualvm工具

    1. **性能监控**:VisualVM可以实时展示应用程序的CPU使用率、内存分配、方法调用频率等信息。通过这些数据,开发者可以定位性能瓶颈,优化代码。 2. **内存分析**:工具提供详细的内存分析功能,帮助开发者检测...

    VisualVM_142 For Mac

    VisualVM 142 For Mac,亲测好用 VisualVM 是一个工具,它提供了一个可视界面,用于查看 Java 虚拟机 (Java ...此外,还可以捕获有关 JVM 软件实例的数据,并将该数据保存到本地系统,以供后期查看或与其他用户共享

    VisualVM_144.dmg.zip

    7. **远程连接**:VisualVM不仅支持本地应用的监控,还可以连接到远程的Java应用实例,实现远程性能分析。 针对Mac OS用户,"VisualVM_144.dmg"文件是一个适用于该操作系统的安装镜像,用户可以通过双击安装,将...

    visualvm监控jvm及远程jvm监控方法

    在本文中,我们将详细探讨如何使用VisualVM来监控本地和远程的JVM实例。 1. **VisualVM概述** VisualVM是一个跨平台的工具,支持Windows、Linux和macOS等操作系统。它提供了丰富的图形界面,用户可以通过直观的...

    最新版java JVM 工具 visualvm_20.zip

    3. **内存分析**:内存分析是VisualVM的一大亮点,它可以显示堆内存的详细使用情况,包括对象实例、类加载器和垃圾收集状态。此外,它还支持创建堆转储文件,以便在离线状态下进行更深入的分析。 4. **线程分析**:...

    使用visualvm工具进行tomcat性能调优和性能监控.docx

    2. 启动 VisualVM 工具,添加 Tomcat 实例,选择连接方式为 JMX 3. 查看 Tomcat 的性能数据,如 CPU 使用率、内存使用率、线程数等 使用 VisualVM 工具可以对 Tomcat 进行性能调优和性能监控,提高 Tomcat 的性能和...

    visualvm_206.zip

    4. **类与对象**:VisualVM可以显示类加载的数量和对象实例的信息,对于理解类的生命周期和内存占用非常有帮助。 5. **采样剖析**:VisualVM支持CPU和内存采样,快速获取应用程序的热点代码,这对于性能调优来说至...

    VisualVM206.zip

    本文将详细介绍VisualVM的功能、使用方法以及在macOS环境下的配置和操作。 一、VisualVM概述 VisualVM是一款集成多种JDK工具的多功能平台,它集成了如JConsole、JProfiler、JMap和JStack等工具的功能,提供了丰富的...

    visualvm_204.zip

    在使用VisualVM时,首先需要解压`visualvm_204.zip`,然后根据JVM版本选择合适的启动方式。由于VisualVM 2.0.4支持Java 8到14,因此确保你的环境已正确配置对应版本的JDK。运行VisualVM后,你可以根据需要连接本地或...

    基于Java的实例源码-Visualvm 基于JAVA的CPU硬件资源管理器源程序.zip

    VisualVM是一款强大的Java性能分析工具,它提供了丰富的功能,帮助开发者深入洞察应用程序的运行状况,特别是CPU的使用情况。本文将详细探讨基于Java的VisualVM源代码中的关键知识点,以及如何利用这些知识来优化...

    Java内存监控工具Java VisualVM

    Java VisualVM是一款强大的Java应用程序性能分析和诊断工具,主要用于监控和分析Java应用的运行时行为,包括但不限于内存使用情况、线程状态、CPU使用率等关键指标。它可以帮助开发者识别并解决性能瓶颈问题,提高...

    visualvm_10rc.rar_progress.jar

    VisualVM的使用并不复杂,通过直观的界面,用户可以轻松地选择要连接的JVM实例,然后查看和分析数据。同时,VisualVM还支持插件扩展,使得其功能可以进一步增强,比如添加对Java Flight Recorder或Java Mission ...

    VisualVM GC分析工具

    VisualVM 是一个工具,它提供了一个可视界面,用于查看 Java 虚拟机 (Java Virtual Machine, JVM) 上运行的基于 Java 技术的应用程序(Java 应用程序)的详细信息。**您可以查看本地应用程序以及远程主机上运行的...

    Java VisualVM监控远程JVM(详解)

    - `-Dcom.sun.management.jmxremote.port` 指定 JMX 的监听端口,上文例子中使用的是 18999 端口。 - `-Dcom.sun.management.jmxremote.ssl` 表明是否启用 SSL 安全连接,这里设置为 false 表示不启用。 - `-Dcom....

    java jvisualvm 监控weblogic配置方法

    ### Java VisualVM 监控 WebLogic 配置详解 ...通过上述步骤,可以有效地使用 Java VisualVM 来监控 WebLogic 服务器及其管理下的多个实例,从而帮助开发者和系统管理员更好地了解应用程序的运行状态和性能表现。

Global site tag (gtag.js) - Google Analytics