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

  1. 云栖社区>
  2. Java面试那些事儿>
  3. 博客>
  4. 正文

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

技术小能手 2018-11-06 14:21:58 浏览5790
展开阅读全文
作为 IDEA 的死忠粉,这篇文章早就该写了,一直拖到现在,虽然有点晚,还是想跟大家分享一下。
相信很多人一旦与 IDEA 结缘,便会慢慢地喜欢上它,就如同我跟它的故事一样。如果你对 IDEA 还不熟悉,可以读读我之前写的这两篇文章来帮你快速入门。

谈谈我与 Intellij IDEA 的故事

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

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

ec1ecb6b9bf93f0926ff8d99146bf6e3ae417d12

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

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


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

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

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

插件中心

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

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

1fe19080f680f4b09f322814e5ec41eb458df69a

Run Anything

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


800f44444364ee41dfeb57e4126414fe660dea4d

JVM Debugger

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

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

f480048dfd0aa0d9cc0a007d36909531e6e131b5

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

-javaagent:debugger-agent.jar

81c1c04053c4fd17d748744ec54e6696b255d2e7

JVM Profiler

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

e6e256cb9345c08a980d5a7008529e69ee75fe5f

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

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

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

d3075b3afdab5a99291333ab5a58b98234289336

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

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

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

9d2a1fcd65eaba9574a9fa2557e4795a501b7237

火焰图

说到火焰图,这里就不得不提一个人 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面试那些事儿”。

网友评论

登录后评论
0/500
评论
技术小能手
+ 关注
所属团队号: Java面试那些事儿