jvisualvm 使用教程

之前看过 jvisualvm,但是那个时候对 JVM 并不是很熟悉,后面看了下八股文,看了下 JVM 的相关知识之后,发现多了解点 JVM 的东西,对我们 CRUD 其实是有指导意义的,就比如我们通常会 new 一堆的没有用到的对象出来,这些其实就是会占用 JVM 内存空间。其实很久之前就玩过了这个 jvisualvm,可惜年少不知 jvisualvm 的好,错把 CRUD 当成宝。

看来有些时候,该看的,改学的,都不能偷懒。废话说了这么多了,那我们开始吧:

老版本

路径

在JDK 对应的 bin 路劲下,存在这个对应的可执行文件,我在 JDK-17 的包下面没有找到(VisualVM: Home 点击这里可以下载,或者看文章后面),然后在 JDK 1.8 的包下面看到了

启动

在 cmd 中 直接执行 jvisualvm.exe 就好,运行完了之后,就可以看到 jvisualvm 的程序界面了:

安装插件

为了方便于我们更加直观的观察 Heap 堆的情况,我们可以来安装一个插件 Visual GC。

在 “工具 -> 插件” 中

找到 “设置 -> 编辑”

一般会报错,因为默认的链接已经给转移了,需要在设置那里把默认的链接更改

修改 URL

那URL填什么呢?先确定一下自己的jdk版本号,然后用以下链接去查看URL

确认版本号,可以菜单键+R,执行cmd,输入java -version来查看自己的版本号,比如我的 jdk8 是 91 的版本

访问网站:VisualVM: Plugins Centers, 找到自己对应的,比如我的就在下面的区间,找到下面的连接地址:

修改完之后:

其实这个时候,已经可以看到可用插件就有 16个了

下载插件

勾选之后,点击安装就搞完了

然后选择一个就对应的进程就可以看到了

高版本

单独下载

访问官网连接 VisualVM: Download,下载最新的就好,下载完了之后,解压

修改配置文件

修改为自己的JDK 路径就好 

启动 

 启动之后的界面

安装插件

采用同样的方式下载就好,不过,最新的不用我们再去找对应的插件地址了: 

找到 Visual GC 就好 ,install 就好

监控

准备一段测试代码

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class HeapTest {

    public static void main(String[] args) throws InterruptedException {
        List list = new ArrayList();

        while (true) {
            list.add(new HeapTest());
            TimeUnit.SECONDS.sleep(3);
        }
    }
}

然后找到对应的线程ID,进入查看 

好了,就到这里吧,后面还有一些性能指标,这个大伙可以去搜索下看看。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

读所罗门的密码笔记10_寒武纪国家与城堡国家

1. DARPA 1.1. DARPA仍然是世界领先的尖端高科技研究推动者之一,资助研发人员开展各个领域的前沿研究,从自动驾驶汽车到植入式神经芯片,从复杂的系统分析(比如分析气候变化)到网络安全,无一…

31. 下一个排列 —— LeetCode (python) [PS: LeetCode 运行环境疑似出错]

# encoding utf-8 # 开发者:xxx # 开发时间: 20:26 # "Stay hungry,stay foolish."class Solution(object):def nextPermutation(self, nums):import itertoolsl len(nums)a tuple(nums)nums.sort()permutations_lst list(ite…

DDD 的四层领域模型是怎样的?包含哪些基础概念?

DDD的四层领域模型如下所示: 展现层:这一层负责向用户显示信息和解释用户命令,完成前端界面逻辑。并将用户请求传递给应用层。应用层:这一层是很薄的一层,负责协调领域层中的领域对象,组成具体应用场景。应…

JAVA JVM内存模型和GC分配和回收

Java 的JVM简介 JVM是(Java Virtual Machine)Java虚拟机的缩写。 JVM是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 ​ 在Java程序运行时,所有的.class类需要加载到JVM中才能执行代码逻辑。不…

Python环境下基于离散小波变换的信号降噪方法

Mallat创造了小波分析中的经典理论之一,即多分辨率分析的概念。后来,在Mallat与Meyer的共同努力之下,他们又在这一理论的基础上发明了离散小波变换的快速算法,这就是Mallat塔式算法,这种算法可以大量减少计算时间。在之…

解锁未来:大模型GPT的应用架构与创新实践

在人工智能的黄金时代,大模型如GPT(Generative Pre-trained Transformer)已成为技术创新和应用发展的前沿。它不仅重新定义了人机交互的方式,还在多个领域内展现出了巨大的应用潜力。本文将深入探讨大模型GPT的应用架构&#xff0…

深入解析:链游、DApp、公链、NFT与交易所开发的全景图

随着数字货币和区块链技术的迅速发展,链游开发、DApp开发、公链开发、NFT开发以及交易所开发等领域吸引了越来越多的关注。本文将以3000字的篇幅,对这些领域进行详细解析,探讨它们的意义、应用场景以及未来发展趋势。 链游开发(Bl…

基于keepalived+gtid+双vip半同步主从复制的MySQL高性能集群

项目名称:基于keepalivedgtid双vip半同步主从复制的MySQL高性能集群 目录 项目名称:基于keepalivedgtid双vip半同步主从复制的MySQL高性能集群 项目规划图 1.配置4台MySQL服务器(1台master,2台slave,1台backup&a…

光伏无人机:绿色能源与航空技术的融合创新

在可再生能源和无人机技术快速发展的背景下,光伏无人机作为一种新兴的绿色航空器,正逐渐展现出其独特的优势和广阔的应用前景。本文将深入探讨光伏无人机的原理、优势以及其在多个领域的应用,展望其未来的发展趋势。 一、光伏无人机的原理 光…

基于微信小程序的外卖管理系统的设计与实现(论文+源码)_kaic

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱,出错率高,信息安全…

【VSCode】修改插件地址

不想放在原始C盘下面C:\Users\{用户}\.vscode\extensions为了后续存储空间考虑,想通过添加环境变量创建名为VSCODE_EXTENSIONS的环境变量,内容指向vs Code扩展所在目录即可 直接配置环境变量,不要在有空格的文件夹下面 变量名称:…

『VUE』11. 操作数组的方法(详细图文注释)

目录 vue中操作数组的方法会修改原数组的 会进行渲染更新不修改原数组的 不会进行渲染更新 push自动渲染concat 赋值渲染总结 欢迎关注 『VUE』 专栏,持续更新中 欢迎关注 『VUE』 专栏,持续更新中 vue中操作数组的方法 vue中数组数据呈现在网页,只检测…

Android 系统大致启动流程

Android启动流程大体为:BootRom -> BootLoader -> Kernel -> Init -> Zygote -> SystemServer ->Launcher 1、Loader层 1.1、Boot ROM 电源按下,引导芯片代码开始从预定义的地方(固化在ROM)开始执行&#xff0…

通讯录(顺序表)保存数据

在通讯录的基础上加上三个函数实现数据的保存。 分别为录入数据,加入数据与保存数据。 加入数据 先检查通讯录空间是否足够,然后将结构体ab中的数据全部放入通讯录mn中。 注意:字符串的拷贝要使用函数strcpy而不能直接用 加入完成之后将通…

速通数据结构与算法第五站 栈队列

系列文章目录 速通数据结构与算法系列 1 速通数据结构与算法第一站 复杂度 http://t.csdnimg.cn/sxEGF 2 速通数据结构与算法第二站 顺序表 http://t.csdnimg.cn/WVyDb 3 速通数据结构与算法第三站 单链表 http://t.csdnimg.cn/cDpcC 4 速通…

unity学习(82)——profiler 限制帧率

实际测试发现当玩家个数增加时,客户端明显变的很卡,想知道为什么变卡了! 1.只有玩家自己的时候 2.两个时候感觉脚本的工作量增大了 拖了一会直接炸了!(数据包积压把内存搞炸,我第一次见) 3.我觉…

Flutter 画笔(Paint)、绘制直线(drawLine)

override bool shouldRepaint(CustomPainter oldDelegate) > true; } class MyPainter extends CustomPainter { override void paint(Canvas canvas, Size size) { //画背景 var paint Paint() …isAntiAlias false …strokeWidth30.0 …color Colors.red; c…

Loss【1】:Focal Loss

系列文章目录 文章目录 系列文章目录前言1. 什么是 Focal Loss2. 逐过程解析 Focal Loss3. Focal Loss 的 PyTorch 实现总结 前言 类别不平衡是一个在目标检测领域被广泛讨论的问题,因为目标数量的多少在数据集中能很直观的体现。同时,在分割中这也是一…

【C++STL详解 —— vector的模拟实现】

CSTL详解 —— vector的模拟实现 vector各函数接口总览vector当中的成员变量介绍默认成员函数**构造函数1:****构造函数2****构造函数3****拷贝构造函数**赋值运算符重载函数 迭代器相关函数begin和end 容量和大小相关函数size和capacityreserveresizeempty 修改容器…

spring boot后端controller中接收表单参数校验

校验分为两部分,一部分是前端的输入时就校验,一部分时后端接收参数时的校验。本文提到的是后端接收参数时的校验。这个后端校验的存在有什么意义呢? 比如我们设置前端在输入参数时限制输入不能为空,应该为3-20位非空字符&#xf…