Java Spy - 代码跟踪神器
Java 方法跟踪工具, Java Debug 工具, Java 方法耗时统计工具, 方便你了解各种开源框架的源码
大家最阅读源码常用的手段应该是借助开发工具 debug? 又或者是把 log4j 的基本改成 debug? 今天要和大家分享一个帮助你更好地阅读源码神器, 瞬间让你知道某个方法调用的所有方法栈 (如果你想记录 SpringBoot2.0 的启动过程所有执行到的方法, 必须调整 JVM 参数, 不然随时 OOM 了), 非常详细地记录了所有被调用到的方法及其耗时. 下面具体了解一下:
一: Java Spy
Java Spy 是一个独立的 Jar 包, 以 - javaagent 的方式运行, 会跟踪和记录设定方法的所有方法的调用过程及其耗时.
二: Spy Demo
Spy Demo 是基于 SpringBoot2.0 的项目, 集成了 springweb 和 mybatis. 基于这个项目我们来看看 SpringBoot2.0 的启动过程以及一个 Http Call 的执行过程. 现在看看如何配置并运行 Spy Demo:
(1) 配置 Idea 和 Java 程序的 JVM 参数
-javaagent:C:\Users\Jo\IdeaProjects\java-spy\java-spy.jar -Xms4096m -Xmx4096m
(2) 配置需要忽略的包名
SPY_IGNORE_FILE 是固定的, spy_ignores.txt 的路径可以随意改, 下面看看 spy_ignores.txt 中忽略了哪些 package:
com.fasterxml
org.aspectj
io.opentracing
ch.qos.logback
org.hibernate
org.jboss
org.springframework.util
org.springframework.jmx
org.springframework.format
org.springframework.boot.logging
org.springframework.expression
org.springframework.asm
org.springframework.cglib
org.apache
org.slf4j
com.sun
sun
java
在跟踪 SpringBoot 的启动过程的时候, 我忽略了以上不太想关心的 package, 一般情况, jdk 相关的包, log 日志相关的包, JSON 包忽略掉就好了.
三: Spy Web
启动 Spy Web 之前需要执行 spy.sql, 数据存储路径和数据库的连接信息:
到此, 需要配置的信息已经完成. 接下来就可以运行 Spy Demo 和 Spy Web 了. 启动完成后, 访问: http://127.0.0.1:16688/
点击 sequence http://127.0.0.1:16688/spy?id=1 可以查看 SpringBoot 启动的时候方法调用详细信息 (由于信息量大, 这个页面打开需要 15min+):
上图中, 蓝色方法名表示还可以继续点击查看其方法调用细节.
视频介绍: https://mp.weixin.qq.com/s/ruEVZ0ZAkJlr90Tk56PefA
来源: http://www.bubuko.com/infodetail-3656008.html