查看原文
其他

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

忆蓉之心 Java面试那些事儿 2019-12-19

作为 IDEA 的死忠粉,这篇文章早就该写了,一直拖到现在,虽然有点晚,还是想跟大家分享一下。


相信很多人一旦与 IDEA 结缘,便会慢慢地喜欢上它,就如同我跟它的故事一样。如果你对 IDEA 还不熟悉,可以读读我之前写的这两篇文章来帮你快速入门。


谈谈我与 Intellij IDEA 的故事


Intellij IDEA 中我一直在用的几个插件


关于这次的更新,官方推文很早都提到了,目前还未正式发布。



总的来说,我挺看好这四个功能,分别是插件中心、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 是一款真得很不错的开发工具,值得你拥有。


......


据 360 观星实验室透露,最近勒索病毒 GandCrab 有大规模爆发趋势,且版本更新频繁。在国内目前仍以弱口令爆破、伪装正常软件诱导用户运行及漏洞传播这三种方式传播。当用户遭受感染时,系统磁盘被加密,文件后缀被修改为随机字母,并勒索交付数字货币赎金。在此,建议大家提前做好防范,开启防火墙,关闭 3389、445、139、135 等不用的高危端口 。


参考

https://blog.jetbrains.com/idea/2018/10/intellij-idea-2018-3-goes-beta

https://blog.jetbrains.com/idea/2018/09/intellij-idea-2018-3-eap-git-submodules-jvm-profiler-macos-and-linux-and-more

https://github.com/jvm-profiling-tools/async-profiler

http://www.brendangregg.com/flamegraphs.html

https://github.com/brendangregg/FlameGraph

https://github.com/dcapwell/lightweight-java-profiler


转发也是一种支持。

—————END—————

看更多好文

请长按下方图片扫码关注

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存