java基础教程虚拟机性能分析和故障解决工具【可视化】

简介: java基础教程虚拟机性能分析和故障解决工具【可视化】

java基础教程虚拟机性能分析和故障解决工具【图形化界面】

--------------作用:帮助判断cpu占用率过高、死循环、死锁、内存泄露、内存溢出等等问题。

 

JConsole:重点学查看线程、内存

VisualVM (推荐):跟JConsole 功能一样,但是功能比JConsole强大。【详细介绍】

 

 

1、jconsole------重点学查看线程、内存


image.png


2、VisualVM-----运行监视、故障处理、性能分析

■ VisualVM基于NetBeans平台开发,因此他一开始就具备了插件扩展功能的特性,通过插件扩展支持,VisualVM可以做到:

    - 显示虚拟机进程以及进程的配置、环境信息(jps、jinfo)。

    - 监视应用程序的CPU、GC、堆、方法区以及线程的信息(jstat、jstack)。

    - dump以及分析堆转储快照(jmap、jhat)。

    - 方法级的程序运行性能分析,找到被调用最多、运行时间最长的方法。

    - 离线程序快照:收集程序的运行时配置、线程dump、内存dump等信息建立一个快照,可以将快照发送开发者处进行Bug反馈。

    - 其他plugins的无限的可能性…


■ 使用与安装插件

    1.在终端输入:jvisualvm执行即可;

    2.安装插件:

       2.1 从主菜单中选择“工具”>“插件” ;

       2.2 在“可用插件”标签中,选中该插件的“安装”复选框。单击“安装” ;

       2.3 逐步完成插件安装程序。


✿ 测试类的代码:


package jvisualvm;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
 * JVisualVM 内存分析
 * @author Huangyujun
 *
 */
public class jvisualvmDemo1 {
    public static void main(String[] args) throws IOException, InterruptedException {
        test1();
        System.in.read();
    }
    private static void test1() throws InterruptedException {
        List<Student> list = new ArrayList<>();
        for(int i = 0; i < 100; i++) {
            Thread.sleep(1000);
            list.add(new Student());
        }
    }
}
class Student {
    private byte[] big = new byte[5 * 1024 * 1024];    //5M
}


■ 使用jvisualvm 具体步骤:

1):先在eclipse终端上输入:jvisualvm

2):选中咱的测试类双击:


57.png


■ 看到的工具栏这些选项,其实就对应的是jvisualvm中安装的插件,需要更多功能,就安装一下啦


57.png


■  堆Dump 和 线程Dump重点

1): 堆Dump:在监视中有堆Dump 【点完观察最左边应用程序生成了一个堆Dump 文件; 当然这时候点概述也可以看到堆Dump 数量,点击它也可以查看堆Dump文件信息】

58.png


59.png60.png


2): 线程Dump:在线程选项里有线程Dump


61.png


 还有抽样器对CPU和内存进行一段时长的取样,从而对应用程序进行分析 【通过 快照或者暂停,获取到某个时刻的内存或cpu状态】


62.png


3,补充jvisualvm的使用---检查死锁:

1):代码案例:


private static void dealLock() {
        Lock lock1 = new ReentrantLock();
        Lock lock2 = new ReentrantLock();
        new Thread(() -> {            
            try {
                lock1.lock();//在线程myThread1中:lock1锁完不释放去睡觉了,在线程myThread2中:lock1 想再锁没机会呀
                Thread.sleep(100);
                lock2.lock();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }, "myThread1").start(); 
        new Thread(() -> {            
            try {
                lock2.lock();
                Thread.sleep(100);
                lock1.lock();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }, "myThread2").start(); 
    }


2):jvisualvm工具中的情况:


63.png


目录
相关文章
|
28天前
|
存储 监控 算法
深入探索Java虚拟机(JVM)的内存管理机制
本文旨在为读者提供对Java虚拟机(JVM)内存管理机制的深入理解。通过详细解析JVM的内存结构、垃圾回收算法以及性能优化策略,本文不仅揭示了Java程序高效运行背后的原理,还为开发者提供了优化应用程序性能的实用技巧。不同于常规摘要仅概述文章大意,本文摘要将简要介绍JVM内存管理的关键点,为读者提供一个清晰的学习路线图。
|
2月前
|
监控 前端开发 Java
Java SpringBoot –性能分析与调优
Java SpringBoot –性能分析与调优
|
3月前
|
存储 算法 Java
Java虚拟机(JVM)的内存管理与性能优化
本文深入探讨了Java虚拟机(JVM)的内存管理机制,包括堆、栈、方法区等关键区域的功能与作用。通过分析垃圾回收算法和调优策略,旨在帮助开发者理解如何有效提升Java应用的性能。文章采用通俗易懂的语言,结合具体实例,使读者能够轻松掌握复杂的内存管理概念,并应用于实际开发中。
|
3月前
|
存储 运维 虚拟化
虚拟化数据恢复——Hyper-V虚拟化故障导致虚拟机文件丢失的数据恢复案例
在Windows Server上部署的Hyper-V虚拟化环境中,因存储中虚拟机数据文件丢失导致服务瘫痪。北亚企安数据恢复工程师通过物理检测、操作系统及文件系统检测,确定为人为格式化造成,并通过镜像硬盘、重组RAID、分析并恢复文件索引项等步骤,成功恢复数据,最终在新Hyper-V环境中验证并迁移所有虚拟机,确保用户业务恢复正常运行。
|
4月前
|
存储 算法 Java
深入解析 Java 虚拟机:内存区域、类加载与垃圾回收机制
本文介绍了 JVM 的内存区域划分、类加载过程及垃圾回收机制。内存区域包括程序计数器、堆、栈和元数据区,每个区域存储不同类型的数据。类加载过程涉及加载、验证、准备、解析和初始化五个步骤。垃圾回收机制主要在堆内存进行,通过可达性分析识别垃圾对象,并采用标记-清除、复制和标记-整理等算法进行回收。此外,还介绍了 CMS 和 G1 等垃圾回收器的特点。
134 0
深入解析 Java 虚拟机:内存区域、类加载与垃圾回收机制
|
4月前
|
监控 IDE Java
【Java性能调优新工具】JDK 22性能分析器:深度剖析,优化无死角!
【9月更文挑战第9天】JDK 22中的性能分析器为Java应用的性能调优提供了强大的支持。通过深度集成、全面监控、精细化分析和灵活报告生成等核心优势,性能分析器帮助开发者实现了对应用性能的全面掌控和深度优化。在未来的Java开发过程中,我们期待性能分析器能够继续发挥重要作用,为Java应用的性能提升贡献更多力量。
|
5月前
|
Java
Java常见JVM虚拟机指令(47个)
Java常见JVM虚拟机指令(47个)
80 3
Java常见JVM虚拟机指令(47个)
|
5月前
|
Java 数据安全/隐私保护 Windows
【Azure Developer】使用Java代码启动Azure VM(虚拟机)
【Azure Developer】使用Java代码启动Azure VM(虚拟机)
|
5月前
|
存储 Java API
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
|
算法 数据可视化 Java
java可视化,实现走迷宫小游戏(包含DFS自动寻找迷宫解)
本程序适用于java程序员巩固类与对象、文件读取、事件响应、awt包中各种工具的相关概念以及对逻辑能力的锻炼。源码联系上面公众号。
java可视化,实现走迷宫小游戏(包含DFS自动寻找迷宫解)