http://guafei.iteye.com/blog/1815222 (jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令)
1、jps 命令:
jps [ options ] [ hostid ]
options选项
-q 仅输出VM标识符,不包括class name,jar name,arguments in main method
-m 输出main method的参数
-l 输出完全的包名,应用主类名,jar的完全路径名
-v 输出jvm参数
-V 输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件
-J 用于传递jvm选项到由javac调用的java加载器中,例如,“-J-Xms48m”将把启动内存设置为48M,使用-J选项可以非常方便的向基于Java的开发的底层虚拟机应用程序传递参数。
hostid 指定了目标的服务器,它的语法如下:
[protocol:][[//]hostname][:port][/servername]
protocol - 如果protocol及hostname都没有指定,那表示的是与当前环境相关的本地协议,如果指定了hostname却没有指定protocol,那么protocol的默认就是rmi。
hostname - 服务器的IP或者名称,没有指定则表示本机。
port - 远程rmi的端口,如果没有指定则默认为1099。
Servername - 注册到RMI注册中心中的jstatd的名称。
示例
不带任何参数
[root@localhost /]# jps
23501 Bootstrap
23709 Jps
带-v参数
[root@localhost /]# jps -v
23501 Bootstrap -Djava.util.logging.config.file=/opt/apache-tomcat-7.0.67/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Xms1024m -Xmx1024m -Xss1m -XX:NewSize=256m -XX:MaxNewSize=512m -XX:PermSize=256M -XX:MaxPermSize=512m -XX:+DisableExplicitGC -Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=512m -Djava.endorsed.dirs=/opt/apache-tomcat-7.0.67/endorsed -Dcatalina.base=/opt/apache-tomcat-7.0.67 -Dcatalina.home=/opt/apache-tomcat-7.0.67 -Djava.io.tmpdir=/opt/apache-tomcat-7.0.67/temp
23729 Jps -Denv.class.path=.:/usr/java/jdk1.7.0_75/lib:/usr/java/jdk1.7.0_75/jre/lib: -Dapplication.home=/usr/java/jdk1.7.0_75 -Xms8m
带-l参数
[root@localhost /]# jps -l
23501 org.apache.catalina.startup.Bootstrap
23751 sun.tools.jps.Jps
2、jstat命令 (jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令 参考)
Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。
jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id(使用jps查看),和所选参数。参考格式如下:
jstat [ option vmid [ interval[s|ms] [count] ] ]
参数interval和count代表查询间隔和查询次数,可以列出当前JVM版本支持的选项,常见的有
l class (类加载器)
l compiler (JIT)
l gc (GC堆状态)
l gccapacity (各区大小)
l gccause (最近一次GC统计和原因)
l gcnew (新区统计)
l gcnewcapacity (新区大小)
l gcold (老区统计)
l gcoldcapacity (老区大小)
l gcpermcapacity (永久区大小)
l gcutil (GC统计汇总)
l printcompilation (HotSpot编译统计)
比如:jstat -gc java进程号
[root@localhost /]# jstat -gc 23915
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
65536.0 65536.0 0.0 50941.4 393216.0 354346.7 524288.0 17374.8 262144.0 51252.2 3 0.160 0 0.000 0.160
3、jinfo 命令
jinfo主要用来查看应用的配置参数,及打印JVM所指定的JVM参数;还可以使用 -sysprops 选项讲虚拟机进程中所指定的System.getProperties()内容打印出来;并可以查看到JVM参数的系统默认值,这个在jps -v是无法看到的;同时jinfo 还能在运行期修改JVM参数, 通过-flag name=value 或者 -flag [+|-]name 来修改一部分运行期可修改的JVM参数。
如果进程运行在64位虚拟机上,需要指明-J-d64参数,如:jinfo -J-d64 -sysprops pid另外,Java7的官方文档指出,这一命令在后续的版本中可能不再使用。笔者使用的版本(jdk8)中已经不支持该命令
相关推荐
### Java线上故障排查方案 #### 一、引言 在软件开发领域,处理生产环境中的问题是一项必备技能。生产环境中可能会遇到多种复杂的情况,比如代码bug、硬件故障、网络问题等,这些都可能导致应用程序无法正常运行。...
1. **故障排查**:当遇到无法运行或异常的 `.class` 文件时,反编译工具可以帮助开发者查看内部代码,找出问题所在。 2. **第三方库研究**:如果缺少某个库的源代码,反编译工具可以帮助我们理解其工作原理,以便...
Java Class文件反编译工具是开发者在处理已编译的.class文件时的一种实用工具,它能够将二进制的Class文件转换回可读性更强的源代码格式,这对于理解和调试已封装的库或分析未知的Java程序至关重要。本文将详细介绍...
在实际开发中,使用Java Class反编译工具可以帮助我们进行代码逆向工程,学习第三方库的内部实现,或者在没有源代码的情况下进行故障排查。但需要注意的是,反编译他人的代码可能存在版权风险,应遵循合法的使用原则...
本章将详细介绍软件故障排查的基本概念及其重要性,并探讨一些常用的故障排查与调试技巧。 **1.1 软件故障排查的重要性** - **提高开发效率**:快速识别和解决问题有助于减少开发周期。 - **提升软件质量**:有效...
在IT领域,端口扫描是网络安全性评估和故障排查中常用的一种技术。它涉及通过发送特定的网络数据包到目标主机来探测哪些端口是开放的,从而了解系统的网络服务和可能的安全漏洞。在这个场景中,我们关注的是一个用...
Java程序反编译器是一种工具,它允许开发者查看并理解Java字节码,将已编译的.class文件转换回源代码格式,尽管无法完全恢复原始的.java文件,但可以帮助我们理解程序的工作原理,进行逆向工程,或者在没有源代码的...
它允许你在测试脚本中捕获当前应用程序窗口的截图,以便于测试结果的验证和故障排查。 总的来说,Java虽然没有内置的截图功能,但通过`Robot`类、第三方库和操作系统API的结合,我们可以实现各种复杂的截图需求。...
总之,Java Class文件反编译工具是开发者分析和理解已编译Java程序的有力助手。它们可以帮助我们查看类库的内部实现,辅助故障排查,或在无法获取源码的情况下进行逆向工程。熟练掌握这些工具的使用,将有助于提升...
配合`jdk-7-ea-bin-b23-windows-i586-30_oct_2007.zip`这个早期版本的Java Development Kit (JDK) 使用,你可以创建、编译和运行Java程序。JDK包含了Java编译器(javac)、Java虚拟机(JVM)、Java运行时环境以及...
使用这样的工具,我们可以方便地查看和分析.class文件,从而加深对Java程序的理解,或者在没有源代码的情况下进行故障排查。 总的来说,Java反编译工具是Java开发人员的重要辅助工具,它们通过解析字节码来揭示程序...
Java反编译工具是开发者和逆向工程人员在理解和学习Java程序时不可或缺的辅助工具。这类工具能够将Java字节码(.class文件)转换回可读的源代码,这对于查看无法获取源代码的库或者分析已编译的Java应用程序来说极其...
8. **Java Mission Control(JMC)**:在JDK 1.8中,这是一个高级的性能分析和故障排查工具,包含了丰富的分析和可视化功能。 9. **Java Native Interface(JNI)**:允许Java代码和其他语言的代码进行交互,为Java...
Java程序在数据库开发和框架应用中的策略涉及到多个关键点,包括对Java程序的理解、数据库的基础概念、数据库管理系统的选择以及数据库应用系统的角色。首先,Java作为一种跨平台的编程语言,因其强大的面向对象特性...
Java反编译工具是开发者和逆向工程人员在理解和学习已编译的Java类文件时常用的工具。...在使用jd-gui时,用户可以期望快速、直观地查看反编译结果,这对于学习和理解Java程序的内部工作原理非常有帮助。
当Java程序被编译后,会生成字节码(.class文件),这些字节码是机器不可读的中间语言。然而,有时我们需要查看这些字节码对应的源代码,比如分析已有库的功能、修复bug或进行代码学习。这时就需要用到反编译技术,...