JVM问题定位工具
JDB
JDB是基于文本和命令行的调试工具,Jikes在JDB的基础上提供了GUI。熟悉JDB还是有价值的,很多情况下需要我们在命令行下完成简单的debug问题定位。
|
1
2
3
|
jdb -classpath bin com.xx.Examplejdb -connect com.sun.jdi.SocketAttach:hostname=myhost,port=8000jdb -connect "com.sun.jdi.CommandLineLaunch:main=Hello 1 2 3" |
我们可能更熟悉使用下面这样的方式来进行调试,但本质上就是在使用JDB:
|
1
|
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9000 |
很多人都知道使用它可以连接上JVM进行远程调试,但是并不清楚这些参数的含义都是什么。那么你可以阅读一下JPDA的文档,JPDA是一种用于虚拟机和调试器之间消息传输的方式,二者谁都可以成为server,另一者则成为client。Sun发布了两种实现,一种是基于TCP/IP的(Socket传输),另一种是基于共享内存的(共享内存传输)。
- Socket传输:这也是我们最常用的调试方式,其中的命令定义和响应包的定义请参阅这两个文档JDWP规格和JDWP传输接口。这就是参数中transport=dt_socket的含义。
- 共享内存传输:参数需要改成transport=dt_shmem。这种模式只支持Windows平台,当然,客户端和服务端当然在一台机器上。
Sun 虚拟机实现需要指定命令行选项,以加载JDWP(Java Debug Wire Protocol Transport)代理来debug。JDK 5.0以前需要指定-Xdebug和-Xrunjdwp这两个参数,以后则可以使用参数-agentlib:jdwp替代之,它们指定了JVM使用的连接 器。从上面的例子代码可以看到几个jdwp支持的参数选项,包括transport、server、suspend、address等等,这些都很常见, 还包括timeout、launch(中断并开始调试的时候,执行什么程序)、onuncaught(如果出现无法捕获的异常是否需要中断并调试)等等。
|
1
|
-agentlib:jdwp=transport=dt_socket,server=y,address=8000,onthrow=java.io.IOException,launch=/usr/local/bin/debugstub |
这段参数是说,在抛出IO异常时,中断并执行debugstub。
早些时候JVM曾经因为开放这样的debug端口,遇到远程扫描,虚拟机发生崩溃,参见bug链接。
VisualVM和JConsole
VisualVM这个工具来自Netbeans的项目,JVM的运行情况一目了然。它已经被收录到JDK的官方工具中去了,官网上面可以找到很多插件,这是这个工具尤其出色的地方。
JConsole也集成在JDK的工具中,图形化地监视虚拟机的状态。
jinfo/jmap/jhat/jstack/jstat
这 几个命令行工具可以很方便地查看当前虚拟机的参数信息、堆、内存图、线程堆栈和垃圾回收信息,它们非常常用,不需要预先使用参数增加虚拟机开启的端口。其 中,jhat命令尤其强大,它可以把堆中的对象导出成为html文件,比较两次虚拟机快照的不同,同时还支持对象查询语句来查询堆中对象的状态。
JProfiler和Optimizeit
JProfiler和Optimizeit一样,都是综合性的性能剖析工具,甚至可以分析不同方法的CPU时间占用,帮助找出CPU热点。
GCView,HP Jmeter,Garbage Cat和GC Analyzer
这几个是GC日志分析工具。
IBM HeapAnalyzer和MemoryAnalyzer
IBM HeapAnalyzer和MemoryAnalyzer都 是dump文件分析工具,可以观察不同对象的数量,对象之间的引用关系等等,可以协助发现内存泄露点。说明一下,我们需要把core文件和dump文件区 分清楚。dump文件是堆内存的映像信息,相当于把内存中存放的对象映射到一个文件里,这个文件通常会比较大;而core文件是当前的线程栈信息,是可以 使用kill -3命令生成的,也可以使用jstack命令获取。
BTrace
Btrace是一种安全和动态的跟踪分析工具,功能非常强大,可以动态分析Java程序是怎么执行的。原理是在运行时把系统中的某些类替换成包含跟踪代码的类(字节码跟踪),而跟踪代码也是用Java语言完成的。
总的来说,通常监控型的工具功能最强大,但是对系统资源要求也很高,对于生产环境上特有的问题,还是多考虑使用一些快照工具,内存和CPU占用小,系统中断时间短。
出自《四火的唠叨》
JVM问题定位工具的更多相关文章
- Java 问题定位工具 -- jps
概览 最近老大布置的任务就是质量加固,偶然看到了一些对于 Java 性能分析的介绍,因此,有了此篇学习笔记. JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jCons ...
- Capsule:开源的 JVM 应用部署工具
[编者按]本文作者 Ron Pressler 是 Parallel Universe 公司的创始人,拥有着丰富的高性能开发经验.通过这篇文章,Ron 向大家详细介绍了全新的开源 JVM 部署工具--C ...
- jvm系列(七):jvm调优-工具篇
16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化.工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗 ...
- Java 问题定位工具 ——jstack
简介 jstack 主要用于生成虚拟机当前时刻的「线程快照」.线程快照是当前 Java 虚拟机每一条线程正在执行的方法堆栈的集合. 生成线程快照的主要目的是用于定位线程出现长时间停顿的原因,如线程间死 ...
- firebug定位工具很强大
firebug这个工具很强大,如果实在找不到自己想要的元素,就安装firebug这个定位工具妥妥的
- 《深入理解Java虚拟机》(五)JVM调优 - 工具
JVM调优 - 工具 JConsole:Java监视与管理控制台 JConsole是一个机遇JMX(Java Management Extensions,即Java管理扩展)的JVM监控与管理工具,监 ...
- Appium 自带的定位工具 Inspector
前言:Appium Inspector是appium自带的一个元素定位工具 一.设置appium 1.点开android setting界面(机器人图标) 2.勾选Application Path,添 ...
- AndroidSDK 自带定位工具 uiautomatorviewer
前言:uiautomatorviewer是androidSDK自带的定位工具 1.打开目录D:\Android\androidSDK\tools\bin 2.点击启动uiautomator,页面显示如 ...
- Java程序性能定位工具-火焰图
Java程序性能定位工具-火焰图 前言 Java火焰图是一种新的查看CPU利用率方式.今天就带大家一起使用来自Google大神的工具来生成火焰图.火焰图非常的直观,问题一目了然,希望有一天它能成为JA ...
随机推荐
- 【Vmware】已有镜像文件的导入
1 虚拟机文件夹中各个文件简介 在创建虚拟机的时候会把相关的文件保存到一个文件夹中.我的机器是Windows 7,64位 ,保存的路径是: C:\Users\User\Documents\Virtu ...
- AVL树的python实现
AVL树是带有平衡条件的二叉查找树,一般要求每个节点的左子树和右子树的高度最多差1(空树的高度定义为-1). 在高度为h的AVL树中,最少的节点数S(h)由S(h)=S(h-1)+S(h-2)+1得出 ...
- flex打印图片
<?xml version="1.0" encoding="utf-8"?><s:WindowedApplication xmlns:fx=& ...
- C# window service的创建
其实我也是第一次在博客园写博客,看到那些高手说自己要多动手写博客,于是乎自己也尝试尝试. 废话不多说.这几天在研究window service,通过查找各种大神写的博客,我终于成功的自己写出来了. 下 ...
- EXTJS 4.2 资料 控件GroupingGrid
http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-17/179.html
- xcode设置 - App内存暴增
当你发现你的项目中什么没有写,只是启动App内存就飙升到50M甚至60M以上,那么请你接着往下看吧,本文对你绝对非常有用! 1. Enable zombie object: 为了方便我们调试程序,我们 ...
- 【概率】poj 2096:Collecting Bugs
Description Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other ...
- BZOJ 1593: [Usaco2008 Feb]Hotel 旅馆
Description 奶牛们最近的旅游计划,是到苏必利尔湖畔,享受那里的湖光山色,以及明媚的阳光.作为整个旅游的策划者和负责人,贝茜选择在湖边的一家著名的旅馆住宿.这个巨大的旅馆一共有N (1 &l ...
- uva 1103
弄懂题意后 其实就是一个dfs /************************************************************************* > Aut ...
- Spring/Hibernate 应用性能优化的7种方法
对于大多数典型的 Spring/Hibernate 企业应用而言,其性能表现几乎完全依赖于持久层的性能.此篇文章中将介绍如何确认应用是否受数据库约束,同时介绍七种常用的提高应用性能的速成法.本文系 O ...