Java 调试工具

Javac

这个应该比较熟悉,用来编译java源文件的

Jps 虚拟机进程状况工具

jps 查看当前用户的java的进程信息

  1. # 只输出LVMID
  2. jps -q
  3. # 输出虚拟机进程启动时传递给主类main() 函数的参数
  4. jps -m
  5. # 输出主类的全名,如果进程执行的是Jar包,则输出Jar路径
  6. jps -l
  7. # 输出虚拟机启动时候的JVM参数
  8. jps -v

Jstat 虚拟机统计信息监视工具

  1. # 命令格式
  2. jstat [option vmid [interval] [sims] [count]]
  3. # 查询类加载情况
  4. jstat -class [进程ID]
  5. # 堆内存状况
  6. jstat -gc [进程ID]
  7. # 最大最小
  8. jstat -gccapacity [进程ID]
  9. # 占用百分比
  10. jstat -gcutil [进程ID]
  11. # 输出上一次垃圾回收产生的原因
  12. jstat -gccause [进程ID]
  13. # 新生代状况
  14. jstat -gcnew [进程ID]
  15. # 新生代状况 最大最小
  16. jstat -gcnewcapacity [进程ID]
  17. # 老年代
  18. jstat -gcold [进程ID]
  19. # 老年代 最大最小
  20. jstat -gcoldcapacity [进程ID]
  21. # 永久 (JDK 8 移除)
  22. jstat -gcpermcapacity [进程ID]
  23. # 即时编译过的方法耗时信息
  24. jstat -compiler [进程ID]
  25. # 输出已经被即时编译过的方法
  26. jstat -printcompilation [进程ID]

Jinfo 配置信息工具

  1. # 系统信息
  2. jinfo -sysprops [PID]
  3. # 查询全部参数信息
  4. jinfo -flags [PID]
  5. # 查询指定参数信息
  6. jinfo -flag [NAME] [PID]

Jmap 内存映像工具

使用 --XX:HeapDumpOnOutOfMemoryError 参数可以让虚拟机在内存溢出之后自动生成堆转快照文件 又或者在Linux 系统下通过 Kill -3 [PID] 恐吓JVM虚拟机也能顺利拿到堆转快照文件

  1. # 输出堆内存快照
  2. jmap -dump:format=b,file=[输出路径] [PID]
  3. # 显示finalizer 线程执行的对象
  4. jmap -finalizerinfo [PID]
  5. # 输出堆信息 (JDK11 没有了)
  6. jmap -heap [PID]
  7. # 显示堆中对象统计信息
  8. jmap -histo [PID]
  9. # 显示永久代内存状态
  10. jmap -permstat [PID]
  11. # 当虚拟机进程对 -dump 没有响应时候, 这个选项可以强制生产dump快照
  12. jmap -F

jhat 虚拟机堆转快照分析工具

# 查看快照分析
jhat [快照文件]

jstack 堆栈跟踪工具

JDK 5 以后有一个 getAllStackTraces 方法获取虚拟机所有的线程 StackTaraceElement 对象.

# 除对站外, 显示关于锁的附加信息
jstack -l [PID]

# 显示原生堆栈
jstack -m [PID]

# 强制输出线程堆栈
-F

jar

创建和管理JAR文件

java

运行Java工具

javac

Java 编程语言的编译器

javadoc

API 文档生成器

javah

C 语言头文件和Stub函数生成器,用户编写JNI方法

javap

字节码分析工具

jlink

将Module 和它的依赖打包成一个运行时镜像文件

jdb

基于JPDA协议的调试器

jdeps

Java类依赖分析器

jdeprscan

搜索JAR包中使用了 “deprecated”的类,从JDK9开始提供

Java安全工具

keytool

管理秘钥库和证书

jarsigner

生成并验证JAR签名

国际化工具

native2ascii

本地编码到ASCII编码的转换器

远程方法调用工具

rmic

Java RMI 编译器,为使用JRMP或IIOP协议的远程对象生成Stub、Skeleton和Tie类,也用于生成OMG IDL

rmiregistry

远程对象注册表服务,用于在当前主机的指定端口上创建并启动一个远程对象注册表

rmid

启动激活系统守护进程,允许在虚拟机中注册或激活对象

serialver

生成并返回指定类的序列化版本ID

部署工具

pack2000

使用JavaGZIP 压缩将JAR文件转换为压缩的Pack2000文件。压缩后的文件是高度压缩的JAR,可以直接部署

unpack2000

将Pack2000文件解压提取为JAR文件

WebService工具

schemagen

用XML绑定Schema生成器,用于生成XML Schema文件

wsgen

XML Web Service 2.0 的Java API 生成用于JAX-WS Web Service 的JAX-WS便携产物

wsimport

XML Web Service 2.0 的Java API 主要用于根据服务器发布的WSDL文件生成客户端

XJC

主要用户根据XML Schema 文件生成对应的Java类

REPL和脚本工具

jshell

基于Java 的Shell REPL 交互工具

jjs

对Nashorm引擎的调用入口, Nashorm 是一个轻量级高性能JavaScript 运行环境

jrunscript

Java 命令行脚本外壳工具,主要是用于解释执行JavaScript、Groovy、Ruby 等脚本语言

JHSDB

客户化免费调试工具

jhsdb hsdb -pid [PID]

Java 反编译工具

Arthas

Docker

# 停止docker
docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')
# 删除docker
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')
# 删除images
docker rmi $(docker images | grep "none" | awk '{print $3}')

iptraf、iftop以及nethogs等,iftop