IDEA 2018.3 EAP,我只看好你这四个功能!

     关于这次的更新,官方推文很早都提到了,目前还未正式发布。估计要下年才能发布了

总的来说,我挺看好这四个功能,分别是插件中心、Run Anything、JVM Debugger、JVM Profiler。

很多人说这次提供了一个高亮的主题,说实话我不是太喜欢,还是喜欢以前的 Darcula。

对于版本控制模块的更新,我没有感觉到特别新奇,因为我习惯用命令行。

对于编辑器的改进,我感觉对我的影响不是太大,因为我觉得掌握了 ctrl+e 就很 6 了,可以查看我之前的文章。

这次的搜索功能也进行了加强,总的来说,是对以前搜索功能进行部分补充与完善。

插件中心

无论是一款工具,还是一个开源框架,它们的成功都离不开一个良好的插件中心,IDEA 的成功也不例外,都在于整个社区为我们提供源源不断的优秀插件。

这次更新后,插件进行了更加规范化的管理,分为插件市场、已安装的插件及待更新的插件。

Run Anything

我觉得这个功能跟 Search Everywhere 「Double Shift」一样重要,又是一个值得记住的快捷键 Double Ctrl。它是在IDEA中运行所有命令的新统一方式,且支持过滤。如Maven、Gradle的命令,甚至可以使用它来运行终端命令,所以你得必须要掌握哦。

JVM Debugger

这次关于调试支持两种方式,一种是支持本地,另一种是支持远程调试。

关于本地调试,可以附加到本地任何 Java 进程中且不需要启动 agent 代理,之后,你便能查看当前线程的状态、变量值及内存视图。

关于远程调试,则需要在启动的时候加载一个 agent 代理,而这个代理文件在该目录下 /lib/rt/debugger-agent.jar,需要你把该文件拷贝到远程服务器上设置 VM 参数启动。

-javaagent:debugger-agent.jar

JVM Profiler

该功能应该是这次更新的亮点。通过采用分析器,来查看进程堆栈执行情况及内存分布,生成一张火焰图。目前只支持 Mac 和 Linux 系统,而且目前尚不支持 Gradle 和 Maven 项目。估计要全部都支持,还需要等待一段时间。

说实话,我测试过程中,不知道是环境问题,还是什么问题,没有找到该功能,也没有找到如上图所示的功能,也进行全局搜索,也没有搜到相应的 Action,所以只得用下面这种笨办法来生成火焰图。

由于该功能依赖于 Github 上的开源项目 sync-profiler,因此,我用如下方法来生成火焰图。

第一种,直接通过命令行的方式运行。

第二种,直接通过 agent 的方式运行。

-agentpath:/path/to/libasyncProfiler.so=start,svg,file=profile.svg

最终,便能生成如下图所示的火焰图。

火焰图

说到火焰图,这里就不得不提一个人 Brendan Gregg,他可以 Linux 性能优化大师,这个火焰图就是他发明的,用于性能分析,解决了如何从代码级别定位性能问题。

关于我跟它结识,还得益于有一次对 nginx 进行性能分析时,找了很久,都没有定位到问题的关键所在,这时,360 的 znlover 给我推荐了它,后来就慢慢喜欢上这款工具。

下面我就来教你怎么读火焰图。

火焰图一般会选择暖色调,用于表示 CPU 的繁忙程度。

x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。

y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。

这里需要说明一下,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。

定位性能问题,主要找出现「平顶」的函数,也就是顶层所占宽度最大的那个函数,这也是最有可能出现性能问题的函数,也说明浪费了 CPU 的很多时间;因此,这个平顶便是火焰图的关键点。

关于火焰图,你真的需要花时间好好捋顺一下。

最后,我想说 IDEA 是一款真得很不错的开发工具,值得你拥有。

参考

转载文章来自公众号JAVA面试那些事