常用指令
jmp查看内存中对象的个数和大小
jmp -histo pid | more
通过这个指令统计出来的对象,不一定全是存活的对象,有些对象生命周期已经结束,但是还未到 GC 的时候,所以未被回收。
可以通过
jmap -histo:live pid | more
来强制执行一次 GC 再统计内存中的对象数.
-
jstack- 生成线程快照能快速定位线程出现死锁、死循环、外部资源等待等长时间停止状态问题。
jstack命令用于生成虚拟机当前时刻的线程快照 -
jmap堆转储(分析堆里的详细信息:内存溢出)观察运行中的jvm物理内存的占用情况(如:产生哪些对象,及其数量),常用于导出堆内存现状供 mat(Memory Analysis Tool)内存分析工具分析可疑的内存泄露情况。
-
jconsole- 内置 Java 性能分析器可以通过命令行或在 GUI shell 中运行,可以轻松地使用 jconsole 来监控 Java 应用程序性能和跟踪 java 中的代码。
-
jps- Java 程序性能诊断工具jps 全称:Java Virtual Machine Process Status Tool
作用:jps 主要用来输出 JVM 中运行的进程状态信息,且只显示当前用户启动的
-
jstat- 监控虚拟机资源和性能的命令行工具可以展示本机或者远程虚拟机进程中的类装载、内存、垃圾回收、JIT 编译等运行数据
-
jinfo- 查看和修改虚拟机的参数用于打印指定 Java 进程、核心文件或远程调试服务器的 Java 配置信息,配置信息包括 Java 系统属性、Java 虚拟机命令行标识参数。
-
javap- JDK 自带的反解析工具它的作用就是根据class字节码文件,反解析出当前类对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息 一般常用的是-v -l -c三个选项:
-
javap -v classxx
不仅会输出行号、本地变量表信息、反编译汇编代码,还会输出当前类用到的常量池等信息
-
javap -l
输出行号和本地变量表信息
-
javap -c
对当前class字节码进行反编译生成汇编代码
-