目录:
JPDA 全称 Java Platform Debugger Architecture. 是Java定义的标准调试框架。
大部分调试工具都是基于JPDA提供的上层接口,扩展定制而来的。
JVM TI 是JVM提供的native 编程接口,可以用来获取JVM内部状态,以及控制Java程序的执行。
JVM TI 的典型能力:
一般采用建立一个Agent方式来调用JVM TI , 而控制方往往是另一个独立的进程。
Agent加载的方式:
JVM内置的 libinstrument.so
可基于这套 instrumentation 用Java开发Agent。
条件断点
双击shift : 搜索
ctrl + 单击 : 查看当前变量或方法被哪些代码引用
junit & Mockito
mock test: 如何在不受其他模块影响的情况下测试一个单独的模块。
Jps , Jstat, Jinfo,
Jmap: 生成堆转储快照
JHat ,
Jstack: 当前线程的快照。
JConsole, VisulVM
JMC: 可持续的在线监控工具。
MAT: 内存分析工具
strace: 追踪系统调用,获取进程动态信息,获取系统级调用,即程序现在在干什么。
eg: strace -o strace.txt -T -tt -e trace=all -p <pid>
pstack: 显示进程的线程堆快照。
eg: pstack <pid> >> pstack.log
pmap: 查询进程的内存映射关系,常用于排查内存泄露。
eg: pmap -x <pid>
vmstat:监控整个系统资源使用情况。
top: 显示各进程的资源占用状况。
eg: top -H -p <pid>