下载 loosejar 库
++https://github.com/kyrill007/loosejar/releases++ 官方文档
以 IntelliJ IDEA 开发工具为例
-
使用IDE 打开项目工程
-
Edit Configurations ...
如图:
增加 javaagent 配置
如图:
-javaagent:${保存路径}/loosejar-1.1.0.jar
运行SpringBoot Application main 方法
可以在控制台打印日志:
[loosejar]: loosejar analysis is registered to run on JVM shutdown. [loosejar]: Registering loosejar as a JMX service... [loosejar]: Registered loosejar as a JMX service: [com.googlecode.loosejar:type=LooseJarMBean]
如图:
使用JAVA jconsole 来分析
1、cd $JAVA_HOME/bin/
2、open jconsole
3、选择监控进程,点击连接
如图:
选择不安全的连接
如图:
等待服务启动完成
依次点击下图: 1 --> 2 --> 3
MBean -> com.googlecode.loosejar:LooseJarMBean:操作:summary -> 点击summary
获取运行时分析结果如图:
弹出分析结果如图:
拷贝返回值内容到本地文本文件
搜索关键字: Utilization: 0.00%
例如找到如下内容
Jar: /Users/kevin/.m2/repository/org/springframework/boot/spring-boot-starter-data-redis/2.0.8.RELEASE/spring-boot-starter-data-redis-2.0.8.RELEASE.jar Utilization: 0.00% - loaded 0 of 0 classes.
根据 pom 中配置依赖和文本文件中查询使用率
Utilization/使用率:当使用率为0.00%则**"或许可以"**将该依赖去掉。
分析实现原理:
基于运行时执行逻辑实现,运行时未执行到的代码将会被统计出未使用的情况。
备注:由于该特性是基于代码运行值的情况进行分析,相比启动编译时分析可以或得更精准的结果,但需要注意的时,它的分析是基于你的代码运行过的程序来确定下来的,所以如果代码中某个依赖库代码在运行时没有被执行到,可能会导致分析使用率为零的情况。