IDEA 2018.3 EAP,我只看好你这四个功能!
作为 IDEA 的死忠粉,这篇文章早就该写了,一直拖到现在,虽然有点晚,还是想跟大家分享一下。
相信很多人一旦与 IDEA 结缘,便会慢慢地喜欢上它,就如同我跟它的故事一样。如果你对 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—————
看更多好文
请长按下方图片扫码关注