VisualVM工具的使用

article/2025/10/25 3:51:56

VisualVM工具的使用

VisualVM,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。
VisualVM使用简单,几乎0配置,功能还是比较丰富的,几乎囊括了其它JDK自带命令的所有功能。
在这里插入图片描述

启动

在jdk的安装目录的bin目录下,找到jvisualvm.exe,双击打开即可。

在这里插入图片描述
在这里插入图片描述

查看本地进程

在这里插入图片描述

查看CPU、内存、类、线程运行信息

在这里插入图片描述

查看线程详情

在这里插入图片描述在这里插入图片描述

抽样器

在这里插入图片描述

监控远程的jvm

VisualJVM不仅是可以监控本地jvm进程,还可以监控远程的jvm进程,需要借助于JMX技术实现。
tip:什么是JMX?
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。
JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

a、指令监控远程tomcat

想要监控远程的tomcat,就需要在远程的tomcat进行对JMX配置,方法如下:

#在tomcat的bin目录下,修改catalina.sh,添加如下的参数
JAVA_OPTS="
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false"

参数意思是:
在这里插入图片描述
还有一种简单的配置方法
直接带入Jar包运行的参数信息,来运行jar

java -Dcom.sun.management.jmxremote   -Dcom.sun.management.jmxremote.port=9999   -Dcom.sun.management.jmxremote.local.only=false   -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false   -Djava.rmi.server.hostname=127.0.0.1   -jar SpringBoot.jar

注意: JMX Server还会随机额外的去监听两个端口,所以在远程连接时我们本地的JMX在连接时也会尝试去连接监听端口。

//查看远端JMX随机监听的端口
jps -l

在这里插入图片描述

//表示使用正则查询并打印该进程打开的所有端口信息
lsof -i|grep 145546

在这里插入图片描述
很显然,多出两个端口。那么再开放这两个端口就可以成功连接了

b、 使用VisualJVM连接远程主机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用SSL认证方式远程查看JVM

背景:上面介绍的方法是所有人都可以监控我的JVM情况,不安全。
目的:弄一个认证方式,让允许登录的主机才能远程访问

生产环境推荐制作密钥的方法
在服务器文件夹新建好对应的密钥,在拷贝到客户端中,这样操作会简单一点

1、client keystore

keytool -genkeypair -alias visualvm -keyalg RSA -validity 365 -storetype pkcs12 -keystore visualvm.keystore -storepass 123456 -keypass 123456 -dname "CN=thelongi OU=Alphalion O=dev L=GZ S=GD C=CN"

2、client cer

keytool -exportcert -alias visualvm -storetype pkcs12 -keystore visualvm.keystore -file visualvm.cer -storepass 123456

3、client truststore

keytool -importcert -alias visualvm -file visualvm.cer -keystore visualvm-test-app.truststore -storepass 123456 -noprompt

4、server keystore(跟第一步格式是一样的)

keytool -genkeypair -alias visualvm-test-app -keyalg RSA -validity 365 -storetype pkcs12 -keystore visualvm-test-app.keystore -storepass 123456 -keypass 123456 -dname "CN=thelongi OU=Alphalion O=dev L=GZ S=GD C=CN"

5、server cer (跟第二步格式一样)

keytool -exportcert -alias visualvm-test-app -storetype pkcs12 -keystore visualvm-test-app.keystore -file visualvm-test-app.cer -storepass 123456

6、server truststore(跟第三步格式一样)

keytool -importcert -alias visualvm-test-app -file visualvm-test-app.cer -keystore visualvm.truststore -storepass 123456 -noprompt

Tip: 秘钥文件制作是依赖上一步操作的,制作制作时要按照顺序执行
指令会生成6个文件visualvm.truststore打头的秘钥就是客户端秘钥,用来认证访问服务端的。
visualvm-test-app就是服务端秘钥。用来加密认证的

运行jar包添加参数

java -jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000  -Dcom.sun.management.jmxremote.rmi.port=9000  -Djava.rmi.server.hostname=81.68.167.181 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=true -Dcom.sun.management.jmxremote.registry.ssl=true -Dcom.sun.management.jmxremote.ssl.need.client.auth=true -Djavax.net.ssl.keyStore=/home/lighthouse/keystore/visualvm-test-app.keystore -Djavax.net.ssl.keyStorePassword=123456 -Djavax.net.ssl.trustStore=/home/lighthouse/keystore/visualvm-test-app.truststore -Djavax.net.ssl.trustStorePassword=123456 SpringBoot.jar

将密钥拷贝到客户端 keystore(自定义文件夹)

cmd打开%JAVA_HOME%/bin

输入

jvisualvm -J-Djavax.net.ssl.keyStore=E:/CodeRepository/keystore/visualvm.keystore 
-J-Djavax.net.ssl.keyStorePassword=123456 
-J-Djavax.net.ssl.trustStore=E:/CodeRepository/keystore/visualvm.truststore 
-J-Djavax.net.ssl.trustStorePassword=123456

轻松拿捏,简简单单
在这里插入图片描述

靓仔们的 【三连】 就是我创作的最大动力,如果本篇博客有任何错误和建议,欢迎靓仔们留言!


http://chatgpt.dhexx.cn/article/snuiw1wf.shtml

相关文章

threejs加载obj文件

threejs加载并展示obj文件&#xff1a; 研究了一段时间&#xff0c;总结下&#xff0c;废话少说&#xff0c;直接上代码&#xff1a;<!DOCTYPE html> <html lang"en"><head><title>three.js webgl - loaders - OBJ loader</title><…

Java3D加载obj文件+mtl文件

Java3d入门学习可以参考这位博主大神——苏若年&#xff0c;关于Java3D学习的文章。下面给出他部分文章的链接&#xff1a; 文1 创建三维几何模型:[ http://www.cnblogs.com/dennisit/archive/2013/05/06/3063042.html ] 文2 加载外部Obj模型:[ http://www.cnblogs.com/dennisi…

[OpenGL]导入obj文件

通常来说我们构建一个模型是比较复杂的工作&#xff0c;那么我们还有什么途径获得模型呢。其中一种方法就是导入obj模型&#xff0c;不要被这个名词给吓到了&#xff0c;其实就是把一个制作好的模型保存到一个文件中&#xff0c;我们称为obj文件。 先上图片&#xff1a; 下面说…

vue 加载3D .obj文件

VUE项目 vue-cli 加载obj obj文件存放位置 public/static vue 引入obj 控件&#xff1a;Vue-3D-Model 安装&#xff1a;npm install vue-3d-model <!-- ThreeDCity.vue文件 --> <template><div class"ThreeJSCity"><model-obj class"…

glb转obj文件及构建简单obj文件

目录 一、转换二、构建1三、构建2 一、转换 提供几个转换的网址&#xff1a; https://anyconv.com/glb-to-obj-converter/ https://products.aspose.app/3d/conversion/glb-to-obj https://miconv.com/convert-glb-to-obj/ 二、构建1 自己构建简单obj&#xff1a; 新建文本文…

obj文件(1):obj文件用txt打开并且了解v,f,vn,vt的含义

obj文件:obj文件用txt打开并且了解v,f,vn,vt的含义 笔记obj文件的格式介绍**下载 Blender 软件** 来源&#xff1a;《Computer Graphics Programming in OpenGL Using C 》by V Scott Gordon John L Clevenger内容&#xff1a;介绍obj文件以txt文本形式打开后的标签v,f,vn,vt&a…

什么是obj文件

此文来源&#xff1a;https://www.cnblogs.com/ShadowHanlder/p/4410213.html 百度百科&#xff1a; 程序编译时生成的中间代码文件。目标文件&#xff0c;一般是程序编译后的二进制文件&#xff0c;再通过链接器(LINK.EXE)和资源文件链接就成可执行文件了。OBJ只给出了程序的…

Unity导出模型为Obj文件

Unity导出模型为Obj文件 资源链接下载导入 代码纪要使用方式参考链接 资源链接 原插件代码中只有MeshFilter的Obj导出代码&#xff1b;由于项目需求&#xff0c;需要将SkinnedMeshRenderer导出为Obj文件&#xff0c;故在原代码的基础上&#xff0c;扩展出了SkinnedMeshRendere…

SolidWorks2021导出带材质的OBJ文件

SolidWorks2021导出带材质的OBJ文件 注意SW中所有零件都要使用英文命名&#xff0c;装配体模式下再次新建宏按钮即可 1. 首先下载并安装工具宏 1.1 下载免费工具宏 到Github下载免费的Free-Solidworks-OBJ-Exporter&#xff0c;并解压到自己想要的保存的位置。 1.2 在Soli…

C++/OpenGL 入门(18):读取obj文件并贴图

来源&#xff1a;《Computer Graphics Programming in OpenGL Using C 》by V Scott Gordon John L Clevenger内容&#xff1a;程序6.3 Simple (Limited) OBJ Loader 简单的obj文件读取器&#xff0c;书P152页&#xff0c;PDF171/403 结果 生成&#xff1a; 读取&#xff1a;…

unity动态加载obj文件

unity2018.4.2f1 vs2017 最近项目需求&#xff0c;需要实现动态读物外部obj模型&#xff0c;并加载到场景中&#xff0c;研究了好几天&#xff0c;终于实现了&#xff0c;在此做个记录。 1、首先随便找个.obj模型&#xff0c;带贴图&#xff0c;我的资源截图如下&#xff1a…

obj文件(3): 如何用matlab 打开obj文件

obj文件:如何用 matlab 打开 obj 文件 第一步&#xff1a;检查obj文本格式第二步&#xff1a;用 Blender 软件重新导出obj文件第三步&#xff1a;用excel 打开这个obj 文件第四步&#xff1a;复制excel中的数据&#xff0c;传给matlab第五步&#xff1a; 用matlab 打开3D模型 第…

三维模型obj文件解析

目录 obj文件简介文件结构顶点数据(Vertex data)&#xff1a;自由形态曲线(Free-form curve)/表面属性(surface attributes):元素(Elements):自由形态曲线(Free-form curve)/表面主体陈述(surface body statements):自由形态表面之间的连接(Connectivity between free-form sur…

linux类动态库,Linux动态库(一)

起因 博主在以Linux下做开发。在软件需求中&#xff0c;需要动态库带来的灵活性。 比如说博主主导的智能主机的开发。它需要支持很多种类的设备控制&#xff0c;如普通的开关灯、RGB灯、窗帘、百叶窗等等。我们将这些设备抽象成Device类&#xff0c;具体的设备就从这个类上派生…

OpenFlow Switch

The picture of OpenFlow Switch openflow 架构分为2层&#xff0c;一个是控制器层&#xff0c;一个是switch 层。中间是由openflow protocal进行连接的&#xff0c;负责传输指令与数据。switch分为3大块&#xff0c;第一是openflow channe&#xff0c;他是负责向控制器传输数据…

【博客450】OpenFlow学习

OpenFlow OpenFlow协议规范定义了OpenFlow交换机、流表、OpenFlow通道以及OpenFlow交换协议。 OpenFlow是第一个开放的南向接口协议&#xff0c;也是目前最流行的南向协议。它提出了控制与转发分离的架构&#xff0c;规定了SDN转发设备的基本组件和功能要求&#xff0c;以及与控…

OpenFlow交换机【ACM SIGCOMM顶会论文笔记】

目录 写在前面的话OpenFlow交换机基本思想与工作原理专用OpenFlow交换机&#xff08;Dedicated OpenFlow switches&#xff09; 启用OpenFlow的交换机&#xff08;OpenFlow-enabled switches&#xff09;其他功能&#xff08;Additional features&#xff09;控制器&#xff08…

关于ns-3中安装openflow的问题,解决openflow not found

官网 官网里面并没有明确的描述&#xff0c;这里结合自己的安装过程讲解一下 首先下载源码&#xff0c;记住这一步最好在ns-3目录下&#xff0c;就是运行waf命名的目录 $ hg clone http://code.nsnam.org/jpelkey3/openflow $ cd openflow进行编译&#xff0c;会提示缺少文件…

OpenFlow基础入门知识

本文进行讨论的是OpenFlow 1.0和OpenFlow 1.3的基本知识 Overview&#xff1a; Openflow 1.0&#xff1a; 安全通道单张流表ipv4 Openflow 1.3&#xff1a; 安全通道多级流表&#xff08;流水线pipeline&#xff09;组表测量表ipv6..... 流&#xff08;flow&#xff09; …

Openflow流表学习

Openflow流表学习 OpenFlow是一种新型的网络协议&#xff0c;它是控制器和交换机之间的标准协议。自2009年底发布1.0版本后&#xff0c;OpenFlow协议又经历了1.1、1.2、1.3及1.4版本的演进过程&#xff0c;目前使用和支持最多的是1.0和1.3版本。 OpenFlow1.3在1.0版的基础上进…