[图片] 开头说两句 小刀博客: https://www.lixiang.red 小刀公从号: 程序员学习大本营 项目背景 我们通过运行 idea 时, 只是点一下 run 或者 debug , 其实还有一些高级的运行/debug 选项可以使用,如 idea 2019.2 版本,可以在 run 的时候查看方法调用 以前 ..

java 小工具 | 用 idea 查看方法的调用过程

开头说两句

小刀博客: https://www.lixiang.red
小刀公从号: 程序员学习大本营

项目背景

我们通过运行 idea 时, 只是点一下 run 或者 debug , 其实还有一些高级的运行/debug 选项可以使用,如 idea 2019.2 版本,可以在 run 的时候查看方法调用

以前的运行方式

如图所示,在 idea 里面运行 main 函数或者单元测试时有以下的选项
image.png
通常来说我们都是点的第一个或者第二个运行的
Run StringUtils.main() : 直接运行
Debug StringUtils.main(): 以 debug 的方式运行,可以打断点
Run StringUtils.main with Coverage 带有运行覆盖率报告的运行
用这个运行的话,可以看到我们的代码覆盖报告:
image.png

idea 2019.2 新附加的运行方式

image.png
在这三个里面,我们可以看到运行时,方法调用等信息
Run StringUtils.main() with Allocations Profiler: 用这个运行,可以看到线程信息,可以看到线程里面方法调用栈的信息
Run StringUtils.main() with CPU profiler : 用这个运行,可以看到虚拟机和 CPU 进行交互的一些方法,比较底层
Run StringUtils.main with Java Flight Recorder: 用这个运行,可以看到 Java 飞行记录器记录的运行时系统的一些信息
通过这些附加方法的调用,我们可以看到系统一些内部的信息,可以为我们学习源码,指条路径

Run StringUtils.main() with Allocations Profiler

image.png
如下图是运行 Spring 时调用方法列表,在这里面可以清楚的看到 SpringBoot 的上下文加载, bean 的初始化以及填充,可以对学习 Spring 各大组件,以及源码提供帮助
image.png

Run StringUtils.main() with CPU profiler

通过 CPU profiler 来运行,可以看到更底层的一些东西, 上面也有一些外层的调用方法,更多的还有 C/C++ 底层的方法调用, invoke 等方法
image.png

Run StringUtils.main with Java Flight Recorder

在第一次调用时,需要先配置 jvm 参数:
image.png
在 idea 右上角的 configuration 里面进行 jvm 参数配置
image.png
点击 Run StringUtils.main with Java Flight Recorder,如下图所示,不仅仅可以看到 Allocations Profiler 里面的 Flame Graph , Call Tree , MethodList 还多了一个 Event ,可以看到 JVM 运行时一些事件, 如 GC, Thread, 类似于飞机上的黑盒子,可以看到内部的一个参数,状态,对 jvm 调优有很大的帮助
image.png
image.png

最后说两句

idea 还有很多很强大的功能等待大家去发掘, 如可以直接连数据库,直接连 Redis , 直接 SSH 连接远程服务器.还有许多强大的功能,大家可以和小刀分享一下:best396975802
image.png

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2295 引用 • 7752 回帖 • 907 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    112 引用 • 337 回帖 • 652 关注
回帖   
请输入回帖内容...