JVM(13):虚拟机性能分析和故障解决工具之Visual VM

news2025/1/16 17:46:04

1 Visual VM作用

是到目前为止随JDK发布的功能最强大的运行监视和故障处理程序,并且可以遇见在未来一段时间内都是官方主力发展的虚拟机故障处理工具。官方在VisualVM的软件说明中写上了“All-in-One”的描述字样,预示着他除了运行监视、故障处理外,还提供了很多其他方面的功能。如性能分析,VisualVM的性能分析功能甚至比起很多专业的收费的工具都不会逊色多少,而且VisualVM还有一个很大的优点:不需要被监视的程序基于特殊的运行,因此他对应用程序的实际性能的影响很小,使得他可以直接应用在生产环境中。

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

  • 显示虚拟机进程以及进程的配置、环境信息(jps、jinfo)。
  • 监视应用程序的CPU、GC、堆、方法区以及线程的信息(jstat、jstack)。
  • dump以及分析堆转储快照(jmap、jhat)。
  • 方法级的程序运行性能分析,找到被调用最多、运行时间最长的方法。
  • 离线程序快照:收集程序的运行时配置、线程dump、内存dump等信息建立一个快照,可以将快照发送开发者处进行Bug反馈。
  • 其他plugins的无限的可能性…

2 使用介绍

运行测试代码如下:

package com.example.demo;

import java.util.ArrayList;
import java.util.List;

public class visualVMdemo {
    public static void main(String[] args) throws Exception{
        test1();
        System.in.read();
    }

    private static void test1() throws Exception{
        List<Student> list = new ArrayList<Student>();
        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
}

2.1 在控制台输入:jvisualvm执行即可;

2.2 安装插件

​ (1) 从主菜单中选择“工具”>“插件” ;

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

​(3) 逐步完成插件安装程序。

当然这边不需要安装,大家根据正式环境需要进行安装。

2.3 默认插件

(1)概述(Overview)

​ 程序的基本信息和启动参数、环境变量等等;

(2)监视(Monitor)

​ 用于显示CPU、内存(分为Heap和Metaspace)、类和线程的使用情况或者数量,另外还包括执行垃圾回收和对堆 Dump的快捷功能 ;

(3)线程(Threads)

​ 详细查看每个线程的运行时间及状态等;

(4)抽样器(Sampler)

​ 对CPU和内存进行一段时长的取样,从而对应用程序进行分析 ;

3 测试案例

3.1 测试代码

package com.example.demo;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class visualVMdemo2 {
    public static void main(String[] args) throws Exception{
        System.in.read();
        System.out.println("死锁");
        deadLock();
    }

    private static void deadLock() {
        Lock lock1 = new ReentrantLock();
        Lock lock2 = new ReentrantLock();
        new Thread(() -> {
            try {
                lock1.lock();
                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();
    }
}

3.2 Visual VM查看现场情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1881637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot实现文章点赞功能

提示&#xff1a;今日是2024年的6月30日&#xff0c;未来的你看到这篇文章&#xff0c;希望你依旧快乐 文章目录 前言 首先在这里前缀部分我就不做要求了,比如说登录信息什么的 数据库表格 这里实现点赞功能&#xff0c;主要是围绕论坛项目完成的 user_info代表用户信息表 for…

动态系统开发方法(DSDM): 基于RAD的全面指导与管理

目录 前言1. 动态系统开发方法概述1.1 DSDM的起源与背景1.2 DSDM的核心理念 2. DSDM的关键原则2.1 用户主动参与2.2 频繁交付2.3 时间盒管理2.4 高效的合作 3. DSDM的主要阶段3.1 可行性研究阶段3.2 业务研究阶段3.3 原型开发阶段3.4 设计与构建阶段3.5 部署阶段3.6 维护与支持…

MicroBin好用的粘贴板工具

有时候你可能想从一台电脑上粘贴文本到另一台电脑上&#xff0c;或者是你想要分享一张图片或者是一些文件&#xff0c;某些设备上登陆qq和微信有不太方便&#xff0c;那么就可以使用MicroBin&#xff0c;它不但可以实现跨设备复制粘贴的功能&#xff0c;还支持文件上传等功能 …

基于改进滑模、经典滑模、最优滑模控制的永磁同步电机调速系统MATLAB仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 针对永磁同步电机调速系统的响应性能和抗干扰能力问题&#xff0c;本文做了四个仿真&#xff0c;分别为&#xff1a;永磁同步电机的PID控制调速系统、基于传统滑模控制的永磁同步电机的调速系统、最…

Windows 系统 Solr 8.11.3 安装详细教程(最新)

Windows 系统 Solr 8.11.3 安装详细教程 说明什么是Solr下载与解压如何启动启动命令&#xff1a;浏览器中打开dashboard其他命令查看关闭命令 说明 本次只是简单安装&#xff0c;为了在项目中使用&#xff0c;如果在公开服务器中安装需要更改开放端口&#xff0c;配置权限等。 …

echarts 图例有数值但是柱子不显示问题

如图所示在做echarts图表时发现柱状图有数值&#xff0c;但是柱子没展示&#xff0c;后来发现这个没展示的数值是最小值和左侧y轴的最小值保持持平了&#xff0c;所以没有展示出来。 将下图中设置y轴最小值为0就可以了 yAxis: [{type: value,name: 产出,min: 0max: dataMax,ax…

使用Visual Studio Code记笔记

因为学习需要&#xff0c;记笔记是很有必要的&#xff0c;平常发CSDN&#xff08;都让CSDN是很棒的哈&#xff09;&#xff0c;后来使用VS Code的时候发现了很多插件&#xff0c;觉得做笔记还是相对不错的&#xff0c;主要用到的还是Markdown 主要设计的插件包括&#xff1a; …

为用户转出并处理MODIS NDVI数据案例过程记述,希望对大家有用!

最近为用户转出和处理了一次MODIS NDVI数据&#xff0c;我将过程做了个总结供大家参考&#xff01;希望能帮助到一些下载和处理数据的朋友! 使用工具为三个&#xff1a;地图资源工具 和 GIS数据转换器-栅格&#xff0c;qgis。 1.选择【数据下载功能】&#xff0c;然后选择MO…

【C++】相机标定源码笔记- 立体视觉相机的校准和图像矫正类

类主要用于双目相机的标定和矫正。它包含了读取和保存相机模型、计算标定参数以及矫正图像的功能。通过这些功能&#xff0c;可以实现双目相机的标定和矫正&#xff0c;从而提高双目相机的精度和稳定性。 公有函数&#xff1a; 构造函数、带参构造函数、析构函数、读取双目相机…

java基于ssm+jsp 房屋租赁系统

1 管理员登录 管理员输入个人的用户名、密码登录系统&#xff0c;这时候系统的数据库就会在进行查找相关的信息&#xff0c;如果我们输入的用户名、密码不正确&#xff0c;数据库就会提示出错误的信息提示&#xff0c;同时会提示管理员重新输入自己的用户名、密码&#xff0c;…

Allegro如何画2D弧形线?

Allegro如何画2D弧形线? 在用Allegro进行PCB设计时,画弧形线的主要是在对PCB进行邮票孔拼板的时候。 具体操作方法如下: 1、选择菜单栏Add 选择3pt Arc(3pt 圆弧) Add的下拉菜单的各项功能作用如下图

influxdb时序数据库使用

influxdb时序数据库使用 influxdb时序数据库使用免费influxdb申请云无服务器Telegraf安装influxdb安装mac安装Redhat && Centos安装docker安装Kubernetes安装windows安装 influx 网页使用influx CLI 安装influx命令行界面influx配置项权限认证配置管理 API 令牌InfluxD…

http.cookiejar.LoadError: Cookies file must be Netscape formatted,not JSON.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

解析桥式整流电路

下面这个桥式整流电路出场率很高&#xff0c;看着一定眼熟。 事实证明&#xff0c;强行灌输的东西总是难以下咽。记得读书那会&#xff0c;第一次看到这个电路时被吓到了&#xff0c;以至于直到这门课结束了也没搞清楚。 本文就来分析一下此电路中电流的走向&#xff0c;进而理…

1、什么是SSD?

概念 SSD&#xff08;Solid State Drive&#xff09;固态硬盘&#xff0c;是以闪存为介质的存储设备&#xff1b;这里突出的重点是闪存。 闪存&#xff0c;也就是常说的flash&#xff0c;分为NOR 和 NAND&#xff1b; NOR的地址线和数据线分开&#xff0c;所以NOR芯片可以像…

Mojo — 适用于所有人工智能开发人员的编程语言

Mojo语言是一个由人工智能公司Modular推出的全新编程语言&#xff0c;专为AI开发者设计。Mojo的语法与Python相似&#xff0c;但结合了Python的易用性和C语言的高性能&#xff0c;旨在解锁AI硬件的可编程性和AI模型的可扩展性。 Modular这个公司则是一个非常年轻的新生AI创业公…

Spark SQL 的总体工作流程

Spark SQL 是 Apache Spark 的一个模块,它提供了处理结构化和半结构化数据的能力。通过 Spark SQL,用户可以使用 SQL 语言或 DataFrame API 来执行数据查询和分析。这个模块允许开发者将 SQL 查询与 Spark 的数据处理能力结合起来,实现高效、优化的数据处理。下面是 Spark S…

【CT】LeetCode手撕—19. 删除链表的倒数第 N 个结点

题目 原题连接&#xff1a;19. 删除链表的倒数第 N 个结点 1- 思路 模式识别&#xff1a;删除倒数第 n 个结点 ——> 定义 dummyHead 并用双指针实现删除逻辑 2- 实现 ⭐19. 删除链表的倒数第 N 个结点——题解思路 class Solution {public ListNode removeNthFromEnd(Li…

选项类型组件支持动态默认值功能

06/26 主要更新模块概览 动态默认 批量设置 应用设置 表单组件 01 表单管理 1.1 【表单组件】-选项类型组件新增动态默认值功能 说明&#xff1a; 原选项类型默认值只支持固定默认值&#xff0c;且关联其他表单数据无法设置默认值&#xff0c;现增加…

体验升级:扫描全能王智能高清滤镜2.0全面测评

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…