JVM调试命令

(一)jps   显示java进程,即使用java命令启动的进程

常用用法

1、jps:显示进程id与进程名称

2、jps -l:显示主类的全名,如果进程执行的是jar包,则输出Jar路径

3、jps -v:输出JVM参数

[email protected]:~$ jps -lv | grep -i datanode

48150 org.apache.hadoop.hdfs.server.datanode.DataNode -Dproc_datanode -Xmx4096m -Dhadoop.log.dir=/home/hadoop/logs -Dhadoop.log.file=hadoop-hadoop-datanode-gdc-dn06-formal.i.nease.net.log -Dhadoop.home.dir=/home/hadoop/hadoop -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,RFA
-Djava.library.path=/home/hadoop/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Dlog4j.configuration=log4j_dn.properties -Xmx20480m -Dcom.sun.management.jmxremote -XX:+UseConcMarkSweepGC -XX:-TraceClassUnloading -Dcom.sun.management.jmxremote.port=65302
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -XX:ErrorFile=/home/hadoop/logs/error.log -Dhadoop.security.logger=INFO,RFAS

(二)jstat    虚拟机统计信息监视工具

1、监视gc相关的信息,监控进程48150,每5秒一次,共20次

[email protected]:~$ jstat -gcutil 48150 5000 20

S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT

48.28   0.00  61.09  75.35  60.28   3616  107.032    24    1.368  108.399

48.28   0.00  67.19  75.35  60.28   3616  107.032    24    1.368  108.399

48.28   0.00  70.44  75.35  60.28   3616  107.032    24    1.368  108.399

(三)jinfo:java配置信息工具,显示jvm参数,类似于jps -v

[email protected]:~$ jinfo -flags 48150

Attaching to process ID 48150, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 24.65-b04

-Dproc_datanode -Xmx4096m -Dhadoop.log.dir=/home/hadoop/logs -Dhadoop.log.file=hadoop-hadoop-datanode-gdc-dn06-formal.i.nease.net.log -Dhadoop.home.dir=/home/hadoop/hadoop -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,RFA -Djava.library.path=/home/hadoop/hadoop/lib/native
-Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Dlog4j.configuration=log4j_dn.properties -Xmx20480m -Dcom.sun.management.jmxremote -XX:+UseConcMarkSweepGC -XX:-TraceClassUnloading -Dcom.sun.management.jmxremote.port=65302 -Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false -XX:ErrorFile=/home/hadoop/logs/error.log -Dhadoop.security.logger=INFO,RFAS

(四)jmap:java内存映像工具

$ jmap -dump:file=1.txt 48150

Dumping heap to /home/hadoop/1.txt ...

Heap dump file created

$ more 1.txt

JAVA PROFILE 1.0.2xitValueLjava/util/Set<TE;>;Ljava/lang/Object;)Val/util/MessageFormatterential;kMethod che/commons/collections/collection/AbstractCollectionDecoratorksum typeOption;)VtableChannel;J)Vava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;CT_SIGNING_CAment/ThreadMXBean;>;

/DataTransferProtos$BaseHeaderProto;)Lorg/apache/hadoop/hdfs/protocol/proto/DataTransferProtos$ClientOperationHeaderProto$Builder;qDeleaming/Name;[Ljavax/naming/directory/ModificationItem;)VnputStream;Ljava/nio/charset/CharsetDecoder;)VkConstructionStagegoogle/protobuf/meGetterdeProtocolProtos$DatanodeRegistrationProto;ax/management/NotificationBroadcasterSupport$ListenerInfo;>;hdfs/protocol/proto/Datalockmanagement/DatanodeDescriptor$BlockTargetPair;>;)V.Remotea/lang/Object;V:Ljava/lang/Object;>()Ljava/util/HashMap<TK;TV;>;9.(I)Lorg/tucky/Louisvillemt
mt_MT nl no pl pt pt_BR pt_PT ro ru sk sl sq sr sr_Latn_BA sr_Latn_ME sr_Latn_RS sv tr uk |  ar hi iw ja ko th vi zh Sortbase/Predicate<-TT;>;)Lcom/google/common/base/Optional<TT;>;bstractMapEntryDecorator;kPoolSliceScanner$LogEntry;S1饀serid_oidReplacementServerConstants$1yzert}+)))[pP]([-+])?(\p{Digit}+)[fFdD]?cConstraintsp<TK;TV;>;)Ljava/util/Map<TK;TV;>;doop/fs/CacheFlagt<+TE;>;)Vflect/WeakCache$Value<TV;>;BERcheckAcceptCredPermissionDeltahmRequestProtoOrBuilderm/sun/jmx/mbeanserver/MBeanAnalyzer$1nodeStorageProto$StorageState;)Lorg/apache/hadoop/hdfs/server/protocol/DatanodeStorage$State;Manager$1;ovider
selectionLjava/lang/String;Ljavax/management/ObjectName$Property;>;II)VBuilder;

(五)jhat: 虚拟机堆转储快照分析工具

对jmap的结果进行分析,但一般使用visualvm等工具

(六)jstack:java堆栈跟踪工具

查看各个线程信息

$ jstack -l 48150 >> 2.txt

[email protected]:~$ more 2.txt

2015-05-24 11:16:27

Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.65-b04 mixed mode):

"DataXceiver for client DFSClient_NONMAPREDUCE_1067049541_1 at /10.160.254.91:59578 [Sending block BP-1320426528-10.120.75.79-136177508

6190:blk_1545471492_1100790319712]" daemon prio=10 tid=0x00007ff12cc5b000 nid=0xa424 runnable [0x00007ff135594000]

java.lang.Thread.State: RUNNABLE

at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)

at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)

at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)

at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)

- locked <0x00000003017d1f88> (a sun.nio.ch.Util$2)

- locked <0x00000003017d1f78> (a java.util.Collections$UnmodifiableSet)

时间: 2024-11-16 14:27:52

JVM调试命令的相关文章

JVM常用命令和性能调优建议

一.查看jvm常用命令jinfo:可以输出并修改运行时的java 进程的opts. jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号. jstat:一个极强的监视VM内存工具.可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量. jmap:打印出某个java进程(使用pid)内存内的所有'对象'的情况(如:产生那些对象,及其数量). jconsole:一个java GUI监视工具,可以以图表化的形式显示各种数据.并可通过远程

windbg 调试命令笔记1

一.windbg 常用知识: 1. Windbg中的调试命令,分为三种:基本命令,元命令和扩展命令.基本命令和元命令是调试器自带的,元命令总是以“.”开头,而扩展命令是外部加入的,总是以感叹号“!”开头 基本命令最少了,大概40个左右.列举所有的基本命令,使用如下命令: ? 元命令有一百多个,使用下面命令列举所有元命令: .help  [/D] 2. 基本信息 version    显示操作系统的版本信息以及Windbg本身的版本信息,Windbg的配置和操作系统密切相关,所以将操作系统的版本信

gdb对应vc调试命令

gdb vc调试对照表: 实现功能                vc                   gdb 修改后编译              f7                   make 跳出函数(step out)    shift+f11            finish,f 重新启动                ctrl+shift+f5        run,r 运行到指定行            f9+f5                tbreak,tb + c

python 调试命令

部分整理自:http://flysnowxf.iteye.com/blog/1327677 启动调试: python -m pdb xxx.py 常用命令说明: l #查看运行到哪行代码 n #单步运行,跳过函数 s #单步运行,可进入函数 p 变量 #查看变量值 b 行号 #断点设置到第几行 b #显示所有断点列表 cl 断点号 #删除某个断点 cl #删除所有断点 c #跳到下一个断点 r #return当前函数 exit #退出 更多的命令http://docs.python.org/li

lldb调试命令

XCode4.0以后,编译器换成了LLVM 编译器 2.0 与以前相比,更加强大:1.LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C++.2.LLVM 速度比 GCC快两倍,建立的程序也会运行的更快. 因为它更好的利用现代的芯片的结构.3.LLVM和Xcode 4完全的整合在一起.包括关键字高亮,代码完整性等全都是由LLVM语法分析器来分析的. 这样可以在编辑的时候就可以很好的了解你的代码. 编译器进化之后,控制台调试命令前缀,也由原来的gdb更改成了ll

GDB调试命令小结

1.启动调试 前置条件:编译生成执行码时带上 -g,如果使用Makefile,通过给CFLAGS指定-g选项,否则调试时没有符号信息.gdb program //最常用的用gdb启动程序,开始调试的方式gdb program core //用gdb查看core dump文件,跟踪程序core的原因gdb program pid //用gdb调试已经开始运行的程序,指定pid即可gdb attach pid //用gdb调试已经开始运行的程序,指定pid即可 2.调试命令(1)执行命令模式-bat

自己常用GDB调试命令

1.进入gdb调试模式 $ gdb xxx(程序名) 设置函数参数:set args  xxx 查看函数参数:show args 2.break 行号 (打断点) 3.delete 行号 (取消断点) 4.next 单步运行 5.step 进入函数内部 6.finish 退出当前函数 7.print 变量名/*(指针)   :查看变量的运行中的值 9.continue 继续执行 9.退出调试模式 signal SIGINT /  强行退出 signal SIGKILL 10.2次Tab 可补全命

Windbg调试命令详解

发表于2013 年 8 月 23 日由张佩 转载注明>> [作者:张佩][原文:http://www.yiiyee.cn/Blog] 1. 概述 用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是:cdb.exe.ntsd.exe.kd.exe和Windbg.exe.其中cdb.exe和ntsd.exe只能调试用户程序,Kd.exe主要用于内核调试,有时候也用于用户态调试,上述三者的一个共同特点是,都只有控制台界面,以命令行形式工作. Windbg.exe在

iOS 开发常用的调试命令

XCode4.0以后,编译器是LLVM,控制台调试命令前缀是lldb 第一.LLVM简介 LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time).链接时间(link-time).运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本. 第二. 对关注编译技术的开发人员,LLVM提供了很多优点: 现代化的设计 LLVM的设计是高度模块化的,使得其代码更为清晰和便于排查问题