JVM监控分析方法总结,JVM监控分析工具推荐,JVM监控命令,JVM监控工具大全

教你用Linux来监控JVM工具 附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全: 书单导航页(点击右侧 极客侠栈 即可打开个人博客):极客侠栈 ①【Java】学习之路吐血整理技术书从入门到进阶最全50+本(珍藏版) ②【算法数据结构+acm】从入门到进阶吐血整理书单50+本(珍藏版) ③【数据库】从入门到进阶必读18本技术书籍网盘吐血整理网盘(珍藏版) ④【Web前端】从HT... 阅读详情

JVM监控分析方法和工具网上介绍的很多,大家关心的大部分内容可能是“内存去哪儿了”,以下是个人的总结和心得。


分析方式:

实时监控

事后时候堆快照、线程栈分析

事后多个堆快照对比分析

飞行记录,一段时间的运行变化,有点像飞机出事后的“黑匣子”数据


观察方式:

命令行、日志文本文件观察分析

可视化图形界面分析


是否免费:

免费版。(整体上比商业版稍微逊色一点,但比较方便)

商业收费两种模式。(一般来说商业收费版的实时性高、功能更多、更强大、界面更舒服美观)


个人推荐分析工具:

推荐Jmc(JDK实时动态-Oracle Java Mission Control)、VisualVM(JDK实时动态)、MAT(静态dump)


监控工具-概要
1、OS命令
详见OS监控-linux.txt
ps -eLf PID   查看指定进程的线程列表


2、JDK自带命令
jps 查看java进程(类似于ps命令,但只列出java进程)
jinfo 查看和调整虚拟机参数
jstat 显示本地或远程虚拟机进程中的类装载/卸载情况、分代内存、垃圾收集、JIT编译/编译失败/最后一次编译失败的方法/编译耗时、保存堆快照
jmap 查看内存对象、空间使用率、保存堆快照、查看finalize执行队列、查看ClassLoader
jhat 堆快照文件*.hprof分析工具,指定堆文件进行分析,可以使用OQL查询(不建议使用)
jstack 查看线程堆栈快照 (死锁、上下文切换、死循环、请求外部资源导致长时间等待、长时间停顿或者出错代码位置)
jstatd 是一个RMI服务端程序,它的作用相当于代理服务器,建立本地计算机与远程监控工具的通信。jstatd服务器将本机的java应用程序信息传递到远程计算机
jcmd  (查看虚拟机进程、打印线程栈、执行GC、代替jmap功能)
java hprof  性能统计工具,Java agent,监控CPU、堆、监控各个函数的CPU占用时间
vmstat
javap 分析Class文件字节码的工具


jps -l
jps -v
jps -m
jinfo -flag MaxTenuringThreshold 进程ID   (查看JVM当前参数值)
jinfo -flag MaxTenuringThreshold 进程ID  -XX:MaxTenuringThreshold=15 (设置JVM当前参数值)
jstat -gc -t java进程ID 1000 1       [<interval> [<count>]]
jstat -gccause java进程ID    (最近一次GC的原因、当前GC的原因)
jstat -gcutil java进程ID    (显示垃圾收集信息)
jstat -gcnew java进程ID    (查看新生代的详细信息)
jstat -gcnewcapacity java进程ID    (查看新生代各区的容量信息)
jstat -gcold java进程ID    (查看老年代GC的概况)
jstat -gcoldcapacity java进程ID    (查看老年代的容量信息)
jstat -gcpermcapacity java进程ID    (查看永久区的使用情况)
jmap -histo java进程ID > E:\cc.txt    (导出堆到文件)
jmap -dump:format=b,file=E:\HeapDump.hprof java进程ID (导出堆快照)
jmap -permstat java进程ID (查看系统的ClassLoader信息)
jmap -finalizerinfo java进程ID (查看堆积在finalizer队列中的对象)
jhat E:\HeapDump.hprof (启动完毕之后,访问http://localhost:7000、支持OQL查询)(不建议使用)
jstack -l java进程ID > E:\thead.stack     (导出线程栈到文件)


jstatd   注意(先启动jstatd,再启动tomcat,这是jmx的tomcat即可以查看CPU,也可以查看Visual GC的内存回收情况)
远程服务器上的JVM监控就需要一些额外的配置了。目前VisualVM支持两种监控方法:Jstatd方法和基于JMX的方法。
Jstatd方法是利用后台的RMI守护进程来实现对远程JVM的监控。首先创建一个监控策略文件。
JMX方式是我们监控应用服务器常用的方,连接JMX方法首先需要在Java端进行一些配置。
"JVM不受此JVM支持" http://blog.youkuaiyun.com/autfish/article/details/51326340
/home/dev/soft/jdk1.8/bin/jstatd.all.policy
jstatd.all.policy文件内容
grant codebase "file:${java.home}/../lib/tools.jar" {
    permission java.security.AllPermission;
};
cd $JAVA_HOME/bin && ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=172.16.1.18 &
jps IP:1099
jstat -gcutil java进程ID@IP:1099


jcmd -l 列出虚拟机列表
jcmd java进程ID help   (帮助)
jcmd java进程ID Thread.print > E:\thread.stack    (打印线程栈信息)
jcmd java进程ID GC.head_dump E:\HeadpDump.hprof      (保存堆快照)
jcmd java进程ID GC.class_histogram
jcmd java进程ID VM.system_properties (查看系统信息)
jcmd java进程ID VM.flags     (查看jvm启动参数)
jcmd java进程ID PerfCounter.print (查看性能统计相关数据、活动线程数、活动线程峰值)
java -agentlib:hprof=help    (帮助)
java -agentlib:hprof=cpu=times,interval=10,file=E:\cpu.txt java进程ID    (java函数的调用前后记录函数的执行时间,进而计算函数的执行时间)
java -agentlib:hprof=heap=sites,interval=10,file=E:\heapMemory.txt java进程ID    (每个跟踪点上的类所占内存百分比)
java -agentlib:hprof=heap=dump,format=b,file=E:\heapDump.txt java进程ID    (保存堆快照)
vmstat 统计线程上下文切换次数


3、JDK自带工具-JConsole     (图形化虚拟机监控工具)
优势(检测死锁、执行GC、非堆内存细化显示:Metaspace、Code Cache、Compressed Class space)
查看堆内存使用情况
查看线程数量
线程栈
线程检测死锁按钮
分代内存大小
分代内存比率
类加载数量
VM概要


4、JDK自带工具-JVisualvm (可视化性能监控工具,安装Visual GC插件之后,才能查看分代各区内存实时监控)
VisualVM连接远程服务器有两种方式:JMX和jstatd
jstatd不支持CPU监控


可替代jdk命令
可替代JConsole
工具-插件,可安装插件
分代各区内存实时监控(安装Visual GC插件之后才能看,效果比JConsole直观)
显示进程ID
导出dump堆快照
导出线程堆栈
查看单个线程堆栈
显示死锁
实时函数CPU耗时排名
实时线程CPU耗时排名
实时对象类型的内存分配排名
实时线程内存分配排名
按类包路径查找、设置排除、刷新频率
2个堆快照文件比较(与另一个堆转储比较 按钮)
对象类型的所有实例-选择实例-追踪root调用位置
Tracer插件, Probes实时波浪图,Probes选项自定义
BTracer插件,打印调用堆栈、参数、返回值、性能监视、定位连接泄露、内存泄露、解决多线程竞争
BTracer插件,编写BTracer脚本,通过字节码注入动态监控系统的运行情况,BTracer用户手册
BTracer插件,监控指定函数耗时
BTracer插件,监控指定函数参数
BTracer插件,监控指定对象的属性值
BTracer插件,定时触发,周期性地执行某一行为
BTracer插件,指定在某个类的第N行代码触发执行一个函数
BTracer插件,指定在某个类的第N行代码,获取对象实例的字段信息
BTracer插件,获取函数内部调用链
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;
@BTrace
public class TracingScript {
@TLS
    private static long startTime=0;
    
    @OnMethod(clazz="/.+/",method="/visitWeb/")
    public static void startMethod(){
        startTime=timeMillis();   
    }
    
    @OnMethod(clazz="/.+/",method="/visitWeb/",location=@Location(Kind.RETURN))
    public static void endMethod(){
         print(strcat(strcat(name(probeClass()), "."), probeMethod)));
         print("[]");
         print(strcat("Time taken:", str(timeMillis()-startTime)));
         print("[]");
    }
}
OQL控制台,与MAT的不一样
操控visualvm的文档,有MAT的OQL功能,有集合/统计函数,支持javascript、json风格语法
支持自定义插件开发,自动分析堆和计算
控制台支持直接使用javascript代码进行编程
非常灵活,visualvm的OQL比MAT的OQL的功能强大很多


5、商业工具-JDK-jmc (Oracle Java Mission Control)
来自JRockit的礼物,界面特别美观舒服
查看MBean
JMX控制台-概览-实时数据、增加监控仪表盘
飞行记录(最具特色,记录程序在一段时间内的运行情况,相当于飞机失事后的黑匣子,一段时间内的内存、I/0、Socket、线程、CPU、耗时方法及其调用树)
触发器弹出框提示,CPU、内存、线程复制过高或者过低
仪表盘面板自定义增加监控项,类似于Visualvm-Tracer-probes
DTracer


6、第三方工具-MAT
MAT的10个小技巧http://www.jianshu.com/p/759e02c1feee
把java本地进程ID导出堆
打开堆备份文件
查看线程栈,当前线程栈帧的局部变量(<Java Local>标记)
内存柱状图(对象类型数量、对象类型内存占有量)
各个对象的引用列表中穿梭查看
Incomming References(入引用-引用到该对象的对象)
Outgoing References(出引用-被该对象引用的对象)
小技巧:
当目的不明确时,可以直接定位到RetainedHeap最大的Object,Select incoming references ,查看引用链,定位到可疑的对象然后Path to GC Roots进行引用链分析
如果大对象筛选看不出区别,可以试试按照class分组,再寻找可疑对象进行GC引用链分析
直接按照包名直接查看GC引用链,可以一次性筛选多个类,但是如下图所示,选项是 Merge Shortest Path to GCRoots,这个选项具体不是很明白,不过也能筛选出存在GC引用链的类,这种方式的准确性还待验证。

Shallow Heap (浅堆)
是指一个对象所占用的内存大小;
不包括其内部引用对象的大小
和对象持有的 内容无关
Retained Heap (深堆)
一个对象被GC回收后,可以真实释放的内存大小;
对象A的保留集指当对象A被垃圾回收后,可以被释放的所有的对象集合(包括对象A本身),即对象A的保留集可以被认为是只能通过对象A呗直接或间接访问到的所有对象的集合。
是指仅被对象A所持有的对象的集合(Retained Set)
是指对象的保留集中所有的对象的浅堆大小之和
是指只能通过该对象访问到的(直接或间接)所有对象的浅堆之和,即对象被回收之和,可以释放的真实空间
对象的实际大小
一个对象所能触及的所有对象的浅堆大小之和
支配树(Dominator Tree)
支配树体现了对象实例间的支配关系,是基于对象间的引用图所建立的
对象A的子树(所有被对象A支配的对象集合)表示对象A的保留集(Retained set),即深堆
如果对象A支配对象B,那么对象A的直接支配者也支配对象B
支配树的边与对象引用图的边不直接对应
支配树(Dominator Tree)在MAT里的操作:选择一个对象A->右键->Java Basics->Open In Dominator Tree,显示的内容就是当对象A呗回收,也会一并回收的所有对象
MAT分析Tomcat内存溢出
MAT实战分析https://www.cc362.com/content/QzpvBlANp4.html
overview左上角Size是堆占用大小
鼠标放到饼图上,显示深堆大小、深堆对象的类
单击饼图->List objets->with outgoing references
OQL (visualvm的OQL比MAT的OQL功能强大)
类似于SQL
select * from com.youren.common.controller.TempController
投影、去重、只查保留集
select AS RETAINED SET * from com.youren.common.controller.TempController
select * from 内存地址 (获取内存地址的方式:选择对象->右键->copy->Address)
select * from "geym\.zbase\..*" (引号内是正则表达式)
select * from INSTANCEOF java.util.AbstractCollection (返回指定类的所有子类实例)
select * from OBJECTS "geym\.zbase\..*" (引号内是正则表达式,OBJECTS返回类的信息)
where like and or
select * from char[] s where s.@length>10    返回长度大于10的char数组
select * from java.lang.String s where toString(s) like ".*java.*"    返回包含"java"子字符串的所有字符串,like操作符的操作参数为正则表达式
    select * from java.lang.String s where s.value!=null        返回所有value域不为null的字符串
    select * from java.util.Vector v where v.elementData.@length>15 and v.@retainedHeapSize>1000 返回数组长度大于15,并且深堆大于1000字节的所有Vector对象
    select toString(f.path.value) from java.io.File f  返回File对象的path属性的值
    [<alias>.]@<attribute> 获取堆内对象的额外属性简历的代理对象的访问,增强原有的对象功能
    select s.toString(), s.@objectId, s.@objectAddress from java.lang.String s  显示String对象的内容、objectId、objectAddress
    select f.@objectId, f.@objectAddress, f.@class, f.@clazz, f.@usedHeapSize, f.@retainedHeapSize, f.@displayName from java.io.File f   显示File对象ID、对象地址、代理对象的类型、类的类型、对象的浅堆大小、对象的深堆大小、对象的显示名称
select v.elementData.@length from java.util.Vector v  显示java.util.Vector内部数组的长度
内置属性
@objectId
@objectAddress
@class
@clazz
@usedHeapSize
@retainedHeapSize
@displayName
@classLoaderId   
@length    
@valueArray基本类型数组   
@referenceArray对象数组
使用代理对象的方法 [<alias>.]@<method>([<expression>,<expression>])
select s.getValueAt(2) from int [] s where (s.@length>2)     显示int数组中索引下标为2的数组内容
select OBJECTS s.@referenceArray.get(2) from java.lang.Object[] s where (s.@length>2)    显示对象数组中索引下标为2的对象
select * from INSTANCEOF java.util.Vector 显示所有的java.util.Vector对象实例及其子类型的对象实例
    select c, classof(c).isArrayType() from ${snapshot}.getClasses() c      显示当前对象是否是数组
    代理对象方法
    getClasses()
    getCalssesByName(String name,boolean includeSubClasses)
    hasSuperClass()
    isArrayType()
    getObjectAddress()
    getValueAt(int index)
    get(int index)
    内置函数
    toHex(number)转为16进制
    toString(object)转为字符串
    dominators(object)取得直接支配对象,与dominatorof相反
    dominatorof(object)取得给定对象的直接支配者,用于获得直接支配当前对象的对象,与dominators相反
    outbounds(object)取得给定对象引用的对象
    inbounds(object)取得引用给指定对象的对象
    classof(object)取得当前对象的类
select toString(s) from java.lang.String s where ((s.value.@length==15) and (s.value!=null))     显示所有长度为15的字符串内容
select OBJECTS dominators(s) from geym.zbase.ch7.heap.Student s 显示所有geym.zbase.ch7.heap.Student对象的直接支配对象


7、商业工具-JProfiler
详见官方文档


8、第三方工具-GChisto
分析GC日志的离线分析工具。 
GChisto 以表格和图形化的方式展示 GC 次数、 持续时间等, 提高了分析 GC 日志的效率
GC 的次数、 GC 的时间、 GC 的开销、 最大 GC 时间和最小 GC 时间
切到 GC Pause Distribution 选项卡, 可以查看 GC 停顿的详细分布, x 轴表示垃圾收集停顿时间, y 轴表示是停顿次数
切换到 GC Timeline 选项卡, 可以显示整个时间线上的垃圾收集, 以便于按时间去查找应用日志(tomcat 日志等), 去了解峰值时系统发生了什么
详见http://blog.youkuaiyun.com/wenniuwuren/article/details/50760259


9、Tomcat Manager
详见官方文档


10、第三方工具-NetBeans Profiler
详见官方文档


JVM第7篇-性能监控 & JVM性能调优案例 性能监控一、JVM监控及诊断工具-命令行篇1.1 基础故障处理工具1.1.1 jps: 虚拟机进程状况工具命令格式使用1.1.2 jstat: 虚拟机统计信息监视工具命令格式使用1.1.3 jinfo: Java配置信息工具命令格式使用1.1.4 jmap: Java内存映像分析工具命令格式1.1.5 jstack: Java堆栈跟踪工具命令格式使用二、JVM监控及诊断工具-GUI篇三、JVM运行时参数四、调优概述4.1 生产环境中的问题4.2 调优基本问题为什么要调优?调优的大方向不同阶段的考虑总结4.3 阅读详情

相关推荐

阿尔萨斯(JVisualVM)JVM监控工具

如果您觉得有用的话,记得给,写作不易啊^ _ ^。而且听说,实在白嫖的话,那欢迎常来啊!!!

杨杨杨~~的博客 1517

jvm系列(七):jvm调优-工具篇

16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化。工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗费性能的分析(dump文件分析)一般也不会在生产直接分析,往往dump下来的文件达1G左右,人工分析效率较低,因此利用工具来分析jvm相关问题,长长可以到...

weixin_33722405的博客 2631

基于CANopenNode协议栈在正点原子探索者开发板上进行移植

配置好之后进行采用keil IDE进行代码生成即可,还需要进行CANopenNode的代码集成,并参照demo进行代码移植。发送完成后心跳包以1s的周期重新开始发送。正点原子的开发板引出的是CAN1接口。这里的心跳时间间隔设置为100ms。则将心跳包周期设置为0。

wangfandashe的博客 4697

Java程序员性能优化实战必看:MAT对OQL的支持

MAT的OQL语法与VisualVM支持的OQL有很大的区别。因此,笔者分为单独的两节分别对这两种OQL语言进行阐述。与VisualVM的OQL不同,MAT的OQL在语法上更接近传统的SQL语句。

m0_63256311的博客 899

orangepi 5 plus ubuntu24.04上安装redroid

OrangePi 5 Plus运行reDroid云手机方案总结 在RK3588+Ubuntu 24.04上部署reDroid(Android容器化方案)的关键步骤: 内核要求:确保启用binderfs(无需ashmem,新版reDroid使用memfd替代); 安装流程: 安装Docker并配置代理加速镜像拉取; 拉取reDroid镜像(推荐Android 12/13 ARM64版本); 通过挂载binderfs启动容器,指定分辨率与DPI参数; 多实例管理: 脚本化创建多个容器(如8个实例),分配独立端口

babytiger的专栏 2292

工业级隔离CAN FD收发器ISO1042设计实战:从原理到EMC防护

在工业自动化与伺服驱动系统中,CAN总线是实现设备间可靠通信的关键技术。其核心原理是通过差分信号传输和仲裁机制,在复杂电磁环境中实现多节点实时数据交换。这项技术的核心价值在于为高噪声、高干扰的工业现场提供了稳定、确定性的通信基础,是构建分布式控制系统不可或缺的环节。其典型应用场景包括新能源汽车电池管理、工业机器人伺服控制以及光伏逆变器集群通信等。本文将聚焦于如何通过高性能隔离CAN FD收发器(如TI的ISO1042)来应对地电位差、浪涌和高压串扰等现场挑战,深入解析其集成的电气隔离、±70V总线故障保护和

weixin_26834815的博客 388

JVM性能调优实战1-OOM

JVM OOM 线上问题 VisualVM Jprofiler MAT

囚徒之困 196

帝国CMS v7.5存储型XSS漏洞挖掘与修复实战

存储型XSS(跨站脚本攻击)是一种常见的Web安全漏洞,其核心原理是攻击者将恶意脚本代码提交并永久存储在服务器端(如数据库),当其他用户访问包含该数据的页面时,脚本会在其浏览器中执行。这种漏洞的危害在于其持久性和广泛的影响范围,可能导致用户Cookie被窃取、会话被劫持,甚至引发蠕虫式传播。从技术价值看,理解存储型XSS有助于掌握Web应用安全的核心逻辑,即数据在输入、处理和输出全链路中的安全风险。在内容管理系统(CMS)等Web应用场景中,用户可控的输入点(如个人资料、评论、公告)若未经妥善过滤和输出编码

weixin_29327525的博客 299

JVM初识之内存分析常用命令和工具

一、简介 无论是在开发环境还是在生产环境中,难免都会遇到内存溢出等内存问题,为了尽快使我们找到发生内存问题所在,Java提供了一些内带的命令供我们使用,除了使用JDK自带命令(jps、jstack、jinfo、jstat等),我们也可以借助一些工具,如VirtualVM、jconsole、Eclipse Memory Analyzer(MAT)等,通过这些命令和工具,可以帮助我们方便的在生产监控...

weixiaohuai的博客 2132

基于传输门与传输管逻辑的全加器设计

全加器是指对输入的两个二进制数相加(A与B)同时会输入一个低位传来的进位(Ci-1),得到和数(SUM)和进位(Ci)。一位全加器可以处理低位进位,并输出本位加法进位。由于这种晶体管的漏极和源极完全可以互换使用,因此这种电路的输入端与输出端也可以互换,这就是具有信号传输双向特性的传输管。传输管的输入信号可以传输到输出端,同时输出端的信号也可以传输到输入端。半加器是指对输入的两个一位二进制数相加(A与B),输出一个结果位(SUM)和进位(C),没有进位的输入加法器电路,是一个实现一位二进制数的加法电路。

qq_40353731的博客 4384

TLS回调函数–一文看懂(详)

TLS回调函数 CTF RE

Joyce_hjll的博客 3733

JVM 学习笔记二十六、JVM监控及诊断工具-GUI篇

二十六、JVM监控及诊断工具-GUI篇 1、工具概述 使用上一张命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但他们存在下列局限: (1)无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间(这对定位应用性能瓶颈至关重要)。 (2)要求用户登录到目标Java应用所在的宿主机上,使用起来不方便。 (3)分析数据通过终端输出,结果展示不够直观。 为此,JDK提供了一些内存泄露的分析工具,如 jconsole,jvisualvm等,用于辅助开发人员定位问题,但是这些工.

小宇哥x的博客 559

多线程开发的基本概念

在Android开发中,我们常常会遇到多线程开发的需求。由于Android中的,我们不能在主线程处理耗时逻辑,否则会导致卡顿,甚至出现ANR(应用无响应)等异常情况。因此,我们需要将网络请求等耗时操作放到中去执行,完成后再更新UI。多线程开发因此成为Android开发中的一个重要部分。随着Android开发技术的不断进步,从早期的使用Handler,到后来的RxJava,再到如今的Kotlin协程,切换线程以及并发编程的代码写起来是越来越简洁了。

喻志强的博客 1019

JVM监控工具有哪些

jps        Java Virtual Machine Process Status Tool        jps是java自带的查看java进程的命令,可以查看当前系统所有运行中的java进程、java包名、jar包名及JVM参数等。在一个项目中有多个JVM运行时,比windows自带的任务管理器里查看方便...

学习 1977

蓝牙攻防实战指南:低功耗蓝牙

Bluetooth Low Energy(也称Bluetooth Smart)是经典蓝牙(Bluetooth Classic)的演进版本,设计目标是实现极低功耗,适用于无需频繁更换电池的设备,如智能手环、健康监测器、蓝牙标签等。Bluetooth Low Energy 是一项极具前景的无线通信技术,它以极低的功耗实现了短距离高效通信,广泛应用于智能设备和物联网领域。然而,其简化的协议结构和配对机制也带来了不小的安全挑战。

idlecloud0105的博客 683

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JVM 性能监控

JVM 性能监控是确保 Java 应用稳定运行和优化性能的关键。通过一系列命令行工具,如 jps、jstat、jinfo、jmap、jstack 和 jcmd,开发者可以深入分析 JVM 的运行状态、内存使用、线程状况和垃圾回收行为。这些工具提供了从进程查看、内存监控到线程分析的多方面支持。此外,图形化工具如 VisualVM、JConsole 和 JMC 提供了更直观的监控体验。通过合理使用这些工具,开发者可以有效排查性能问题,如频繁的 Full GC 或内存泄漏,从而优化应用性能。建议定期监控 GC 情

红血哥 1118

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JVM--监控和故障处理工具

实时监控 JVM 运行状态(GC、类加载、JIT编译等)→ 按实例数/大小排序 → 定位可疑对象。:生成线程快照(thread dump):列出当前系统中所有的 Java 进程。:对象查询、引用链分析、内存泄漏检测。:分析 jmap 生成的堆转储文件。:Young GC 次数/耗时。:查看和动态修改 JVM 参数。:Survivor 区使用率。:Full GC 次数/耗时。:内存泄漏分析、对象分布统计。:生成堆内存快照和内存统计。JDK 8 及之前:内置。:Eden 区使用率。CPU 飙高问题定位。

你我约定有三的博客 869

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JVM 调优命令&工具使用

top命令查看进程占用资源情况 jps 命令 查看 java进程 jstack 命令 关注WATTING 查看死锁问题 jstat -gc pid 查看 GC 情况 jinfo pid 查看 jvm 常用信息 arthas [推荐] 安装&启动 使用 jmap 命令 [生产环境慎用! 会造成生产环境卡顿!!!!] 使用jvisualvm 进行查看 d...

张伯毅的专栏 7859

JVM监控

JVM命令行监控、可视化监控、GC日志监控

xike1024的博客 1459

JVM性能监控与诊断,看完你就懂

JVM性能监控与诊断,看完你就懂。

南客先生的博客 2171

JVM性能监控工具的使用

选择哪款工具很大程度上取决于你的具体场景和需求。初学者/本地开发:从JVisualVM开始,它是JDK自带的,功能全面,足够应对大多数常见问题。生产环境深度分析:如果条件允许,JProfiler或JMC/JFR是更专业的选择。JFR的开销尤其适合长期监控。服务器紧急排查命令行工具(jps, jstat, jstack, jmap)和Arthas是你的首选,它们无需GUI,灵活高效。监控远程应用:记得在启动应用时配置好JMX参数。内存分析:生成堆转储(Heap Dump)并用JVisualVM。

qq_39126115的博客 1481

JVM-监控命令及工具

1.JDK命令行工具 开发人员肯定知道java.exe和javac.exe 今天介绍一些jvm性能监控常用命令 1.1 jps JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程 jps -l 输出主类的全名,如果执行程序是jar包,输出jar的路径 -v 输出虚拟机进程启动时jvm参数 -q只输出LVMID,省略主类名称 -m输出虚拟...

谢文峰的博客 687

JVM 分析工具和查看命令

JVM 分析工具和查看命令Java Development Kit (JDK) 命令行 工具监视JVMjps 虚拟机进程状况工具jstat 虚拟机统计信息监控工具jstatdJmc故障排除jcmdjinfojhatjmapjsadebugdjstack Java Development Kit (JDK) 命令行 工具 监视JVM jps 虚拟机进程状况工具 (JavaVirtual Machine Process Status Tool) 命令格式:jps [options] [<hostid&g

jinhf10的博客 1158

【JVM】故障诊断和性能监控命令

对于日常开发,掌握。

王富贵的博客 1154

JVM调优实战 Day 6:JVM性能监控工具实战

本篇文章围绕JVM性能监控工具进行了系统性讲解,从概念解析、技术原理、常见问题、诊断方法、调优策略到实战案例,全面覆盖了JVM性能监控的核心内容。如何使用jstatjmapjhat等命令行工具进行监控与分析如何通过VisualVM和JMC进行图形化性能分析在实际项目中如何结合监控工具定位内存泄漏、GC问题等性能瓶颈通过真实案例了解性能问题的诊断与解决流程| 技术点 | 说明 || jstat | 查看GC统计信息,判断GC频率和效率 |

在未来等你的专栏 1417

第26讲 | 如何监控和诊断JVM堆内和堆外内存使用?

上一讲介绍了 JVM 内存区域的划分,总结了相关的一些概念,今天我将结合 JVM 参数、工具等方面,进一步分析 JVM 内存结构,包括外部资料相对较少的堆外部分。今天要问你的问题是,如何监控和诊断 JVM 堆内和堆外内存使用?

qq_37756660的博客 2806
上一篇: 一份8G内存Tomcat服务器的JVM垃圾回收G1算法参数清单
下一篇: Java内存溢出的原因有哪些?Java进程占用内存构成有哪些?
西兹兹
博客等级 码龄22年 21粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值