Java多线程的监控分析工具(VisualVM)

五千字长文带你硬磕Java线程Dump分析,没看懂尽管来找我 1 Thread Dump介绍 1.1 什么是Thread Dump Thread Dump是非常有用的诊断Java应用问题的工具。每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机打印的thread dump略有不同,但是 大多都提供了当前活动线程的快照,及JVM中所有Java线程的堆栈跟踪信息,堆栈信息一般包含完整的类名及所执行的方法,如果可能的话还有源代码的行数。 1.2 Thread Dump特点 能在各种操作系统下使用; 能在各种 阅读详情

在Java多线程程序运行时,多数情况下我们不知道到底发生了什么,只有出了错误的日志的时候,我们才知道原来代码中有死锁。撇开代码检查工具,我们先讨论一下利用VisualVM监控,分析我们的多线程的运行情况。

AD:51CTO学院:IT精品课程在线看!

在Java多线程程序运行时,多数情况下我们不知道到底发生了什么,只有出了错误的日志的时候,我们才知道原来代码中有死锁。撇开代码检查工具,我们先讨论一下利用VisualVM监控,分析我们的多线程的运行情况。(注:实践本文内容的JDK的版本需要1.6.07以上)

什么是VisualVM

VisualVM是JDK的一个集成的分析工具,自从JDK 6 Update 7以后已经作为Sun的JDK的一部分。

VisualVM可以做的:监控应用程序的性能和内存占用情况、监控应用程序的线程、进行线程转储(Thread Dump)或堆转储(Heap Dump)、跟踪内存泄漏、监控垃圾回收器、执行内存和CPU分析,保存快照以便脱机分析应用程序;同时它还支持在MBeans上进行浏览和操作。尽管 VisualVM自身要在JDK6以上的运行,但是JDK1.4以上版本的程序它都能被它监控。

在JDK1.6.07以上的版本中:到$JAVA_HOME/bin,点击jvisualvm.exe图标就可以启动VisualVM;当然也可以点击这里获取官方的最新版本,支持:英文,中文,日文。

VisualVM功能集成较多,我们这里只讨论它对象线程的监控分析。

VisualVM监控线程

当我们运行VisualVM的时候,可以在应用程序》本地中看到VisualVM和eclipse的运行程序,然后我们启动eclipse中的一个线程:com.longtask.thread.TestVisualVm,可以看到在菜单中多了一个该线程的显示。点击右边的 线程 菜单,可以看到线程运行的跟踪情况。

点击 thread dump,可以生成该线程的运行情况的tdump文件,通过thread dump提供的相关信息,我们可以看到线程在什么地方被阻塞了以及线程的其他状态。

把日志另存为文件,到Thread Dump Analyzer的主页点击图标下载TDA,然后用TDA打开刚才VisualVM保存的 thread dump文件,查看相关的分析结果。

我们也可以用VisualVM来监控远程java线程的运行情况。

远程监控:启动RMI服务

1:新建一个jstatd.all.policy文件,在里面添加以下内容来保证jstatd服务启动的时候不报异常:

    
  1. grant codebase "file:${java.home}/../lib/tools.jar" {  
  2.     permission java.security.AllPermission;  
  3. }; 

2:netstat -ano | grep -i 1099 查看1099端口是否被占用了,如果被占用,则需要选择其他端口来启动jstatd服务

3:如果端口被占用,用以下方式启动jstatd服务:

    
  1. rmiregistry 2020 & jstatd -J-Djava.security.policy=jstatd.all.policy -p 2020 

更多jstatd的文档请参考sun公司的官方文档 这里

远程监控Jboos服务

1:修改JDK下面的jmx的配置文件:

切换至$JAVA_HOME所在目录/jre/lib/management下,

I:将jmxremote.access、jmxremote.password.template权限调整为读写:

    
  1. grant codebase "file:${java.home}/../lib/tools.jar" {  
  2. permission java.security.AllPermission;  
  3. }; 

II:vi jmxremote.password去掉

# monitorRole QED

# controlRole R&D

的#号

2:在Jboss的启动文件中添加以下信息:

    
  1. JAVA_OPTS="-Dcom.sun.management.jmxremote.port=2899 \  
  2. -Dcom.sun.management.jmxremote.ssl=false \  
  3. -Dcom.sun.management.jmxremote.authenticate=false \  
  4. -Djava.rmi.server.hostname=10.212.20.9  其他配置" 

3:检查启动情况:

netstat -a | grep -i 2899 查看端口占有情况

如果2899端口被其他程序占用,在jboss配置文件中调整端口-Dcom.sun.management.jmxremote.port=****

而后在VisualVM中就添加远程连接,选择jmx方式,就可以监控jboss的运行情况了。

JVisualVM 中线程状态(运行/休眠/等待/驻留/监视)解析 在java自带的工具JVirtualVM中线程有以下几种状态:先说结论,各状态含义如下,后面有详细的demo测试验证:运行(runnable):正在运行中的线程。休眠(timed_waiting):休眠线程,例如调用Thread.sleep方法。等待(waiting):等待唤醒的线程,可通过调用Object.wait方法获得这种状态,。 阅读详情

相关推荐

Java线程问题诊断工具:线程转储(Thread Dump)详解

线程转储是一种Java线程问题诊断工具,通过提供线程的状态、执行堆栈和锁信息来帮助我们诊断和解决线程相关的问题。通过分析线程转储,我们可以了解线程的状态、执行堆栈和锁信息,从而帮助我们诊断和解决线程相关的问题,如死锁、线程卡住、性能问题等。长时间等待(Long waiting):查找线程转储中处于等待状态的线程,分析它们的堆栈跟踪,确定它们等待的资源或锁,并检查是否存在资源争用或死锁情况。死锁(Deadlock):查找线程转储中的相互等待锁的线程,分析它们的堆栈跟踪,确定哪些锁导致了死锁,并尝试解除死锁。

TechWhizZ的博客 761

java线程分析工具

java线程分析工具

永不停歇的人 747

C语言实现AES加解密

C语言实现AES加解密 #include<stdio.h> #include<string.h> #include<time.h> #include<windows.h> #define Nb 4 //数据块行数 #define Nk 4 //密码块行数 #define Nr 10 //轮加密次数 unsigned char RoundKey[4*Nb*(Nr+1)]; //轮密钥 unsigned char Key[17];

qq_44310495的博客 8891

VisualVM监控备忘(n)

 在java多线程程序运行时,多数情况下我们不知道到底发生了什么,只有出了错误的日志的时候,我们才知道原来代码中有死锁。撇开代码检查工具,我们先讨论一下利用VisualVM监控,分析我们的多线程的运行情况。(注:实践本文内容的JDK的版本需要1.6.07以上) 什么是VisualVM VisualVM是JDK的一个集成的分析工具,自从JDK 6 Update 7以后已经作为Sun的JD...

黑白猪的世界 490

利用SPSS实现逻辑回归,树模型,以及广义线性模型

本案例是IBM SPSS数据分析与挖掘实战案例精粹----第九章的学习记录 案例背景:分析出导致急救后迟发性颅脑损伤的主要影响因素,共有201项案例: 分析思路:先使用logistic回归模型进行影响因素筛选,然后利用分类树探索自变量中是否存在交互作用,最后利用广义线性模型过程拟合带交互项的Logistic回归模型 字段:性别,年龄,收缩压,舒张压,血小板,脑挫伤,中线位移,脑肿胀,入院意识,是否手术急救,其余急救措施,是否出现迟发性脑损伤; ...

hepan_defeng的博客 1万+

ArcGIS | 全球新冠肺炎地图数据下载和处理

ArcGIS

thinkpang的博客 2901

Java VisualVM 多线程监控分析工具

%JAVA_HOME%/bin/jvisualvm.exe是多线程监控分析工具。可以监控内存泄露,跟踪垃圾回收,执行时内存、cpu分析,线程分析……      程序运行后会自动监控本机运行的java程序(Local标签下,远程服务器上的java程序需要另行配置)  Virtual VM 的 Overview 可以查看 eclipse 的启动配置参数(即eclipse目录下的eclipse.ini

司马懿的西山居 4827

Windows 11 24H2 系统下,保姆级安装华为 eNSP 模拟器(含依赖软件下载与避坑指南)

本文提供Windows 11 24H2系统下华为eNSP模拟器的完整安装指南,涵盖系统配置调整、依赖软件安装及常见问题解决方案。特别针对新版系统的兼容性问题,提供详细的避坑步骤和优化建议,帮助网络工程师顺利完成eNSP模拟器的部署与使用。

weixin_42567752的博客 429

Java多线程监控分析工具(VisualVM)/JConsole

http://zhaohe162.blog.163.com/blog/static/3821679720122314172834/ &lt;/div&gt; &lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt...

ffwangkun的博客 3675

simulink的电动汽车制动系统热管理仿真

本文系统研究了电动汽车制动系统热管理仿真技术。通过建立机电液多物理场耦合模型,分析了不同工况下的动态热平衡特性。提出基于MPC的动态调节和NSGA-II多目标优化算法,使电池温度波动降低60%。创新性采用石墨烯相变材料与微通道液冷复合技术,冷却系统能耗减少40%。研究构建了完整的工程验证平台,涵盖200kW电制动测试台和高精度热成像系统。展望指出,未来将结合Transformer预测和强化学习算法,进一步优化热管理策略。该研究为电动汽车制动系统热管理提供了从理论建模到工程实施的完整解决方案。

xiaoheshang_123的博客 122

【ESD专题】从原理上分析TVS管PCB Layout的经验法则

我们常常会听到的一些经验法则,按这些经验法则去做,一般也不会有什么问题,但是到底是为什么呢? 没有从原理上分析和证明的时候,往往在Layout之后还要担心实际测试结果怎么样。或是在实际测试出问题后,根本无法进行分析,难道说修改一个版本就好了?那要从哪里修改呢?也无从下手呀。...

一点硬件 1447

Java自带的多线程监控分析工具(VisualVM)

转自: http://www.udpwork.com/item/1105.html 在java多线程程序运行时,多数情况下我们不知道到底发生了什么,只有出了错误的日志的时候,我们才知道原来代码中有死锁。撇开代码检查工具,我们先讨论一下利用VisualVM监控,分析我们的多线程的运行情况。(注:实践本文内容的JDK的版本需要1.6.07以上) 什么是VisualVM ...

weixin_30340819的博客 276

YOLO26 正式发布源代码!极致速度优化方案, 面向工业级落地的目标检测模型!

YOLO26 作为 Ultralytics 公司于 2025 年 9 月发布的最新一代目标检测模型,在架构设计和技术实现上展现了显著的创新。本文深入分析了 YOLO26 的核心架构改进和技术原理,重点探讨了其在边界框回归、推理流程、损失函数设计和优化算法方面的突破性进展。

魔改工程师的博客 1244

VisualVm简介

在java多线程程序运行时,多数情况下我们不知道到底发生了什么,只有出了错误的日志的时 候,我们才知道原来代码中有死锁。撇开代码检查工具,我们先讨论一下利用VisualVM监控,分析我们的多线程的运行情况。(注:实践本文内容的JDK 的版本需要1.6.07以上)     什么是VisualVM     VisualVM是JDK的一个集成的分析工具,自从JDK 6 Update 7以后已...

348

【MATLAB-app】系列教程(含视频)第4、5、6课:实战_制作简单的图像处理软件

写作时间: 2020-12-27 我的教程目录 第1课:初步了解appdesigner 第2课:学会制作一个计算器 第3课:学习更多的控件(重点!) 第4课:实例1:制作一个图像处理软件 第5课:学习APPdesigner的设计精髓,框架 第6课:结合使用多种控件,函数等,丰富我们的实例1 第7课:app设计打包,完成工程应用导出 标题: 第4课:我的实例_学会制作一个图像处理软件 本文目录: 1.先看看我之前的一个工程 2.常用的基本组件控件 3.最常用且实用的控件的用法 -3.1 editfilel

wind 4055

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java 性能分析工具

如何利用 JConsole观察分析Java程序的运行,进行排错调优  http://jiajun.iteye.com/blog/810150  如何使用JVisualVM进行性能分析  http://jiajun.iteye.com/blog/1180230  全功能的Java剖析工具(profiler)  http://www.blogjava.net/mrzhangshunl

程序猿杨欣 632

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java Unit 多线程 测试

1 内存泄露测试 参考《高质量java程序设计》P112 jdk自带内存泄露工具测试方法 hprof Java内存泄露测试及工具 http://blog.youkuaiyun.com/bruce_sky/article/details/8004318 http://hi.baidu.com/shiliangshuai/item/852d5b3546e735d56c15e95a 使用J

bruce_sky的专栏 2468

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jvm性能监控工具的使用

在Java多线程程序运行时,多数情况下我们不知道到底发生了什么,只有出了错误的日志的时候,我们才知道原来代码中有死锁。撇开代码检查工具,我们先讨论一下利用VisualVM监控,分析我们的多线程的运行情况。(注:实践本文内容的JDK的版本需要1.6.07以上) 什么是VisualVM VisualVM是JDK的一个集成的分析工具,自从JDK 6 Update 7以后已经作为S

shecanwin的专栏 1248

VisualVM 工具使用

VisualVM使用 内存泄漏排除工具 线程排除工具

lixia0417mul2的博客 747

java性能分析1

如何利用 JConsole观察分析Java程序的运行,进行排错调优 http://jiajun.iteye.com/blog/810150 如何使用JVisualVM进行性能分析 http://jiajun.iteye.com/blog/1180230 全功能的Java剖析工具(profiler) http://www.blogjava.net/mrzhangshunli/

screensky的专栏 1042

java thread dump

一、thread dump      产品是Java写的,运行于JBOSS平台。操作系统为linux。当系统出现问题是很,可以通过thread dump分析就可以找到,但这只是解决问题的第一步,即找到问题的所在。 首先:如何产生thread dump日志? 第一步:找到应用程序所在的进 程号,通过top命令可以找到,不详述。 第二步:执行kill -3 pid获取thread

bopzhou 5921

jvisualvm的使用

<br />在多线程调试的时候用到了java的VisualVM工具,jdk1.6自动带了该工具。介绍下该工具的使用方法:<br /><br /> 准备<br /> 在windows下由于以下原因会导致 Local Applications Cannot Be Detected (Error Dialog On Startup):<br /> 1. Java程序缺少读写Windows的临时目录的权限<br /> 2. Windows的临时目录是放在非NTFS分区(确切地说,是不支持AC

pengqb的专栏 3825
上一篇: Java自带的GUI性能监控工具Jconsole以及JisualVM简介
下一篇: JProfiler试用手记
chendc201
博客等级 码龄17年 49粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值