且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-09-11 19:51:14

作为 IDEA 的死忠粉,这篇文章早就该写了,一直拖到现在,虽然有点晚,还是想跟大家分享一下。
相信很多人一旦与 IDEA 结缘,便会慢慢地喜欢上它,就如同我跟它的故事一样。如果你对 IDEA 还不熟悉,可以读读我之前写的这两篇文章来帮你快速入门。

谈谈我与 Intellij IDEA 的故事

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

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

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

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

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


IDEA 2018.3 EAP,我只看好你这四个功能!对于版本控制模块的更新,我没有感觉到特别新奇,因为我习惯用命令行。
IDEA 2018.3 EAP,我只看好你这四个功能!

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

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

插件中心

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

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

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

Run Anything

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


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

JVM Debugger

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

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

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

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

-javaagent:debugger-agent.jar

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

JVM Profiler

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

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

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

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

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

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

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

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

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

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

火焰图

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

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

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

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

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

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

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

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

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

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


......


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


原文发布时间为: 2018-11-06
本文作者: Java面试那些事儿
本文来自云栖社区合作伙伴“ Java面试那些事儿”,了解相关信息可以关注“Java面试那些事儿”。