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

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

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


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


谈谈我与 Intellij IDEA 的故事


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


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


image.png


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


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


image.png


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


image.png


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


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


插件中心


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


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


image.png


Run Anything


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


image.png


JVM Debugger


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


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


image.png


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


-javaagent:debugger-agent.jar


image.png


JVM Profiler


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


image.png


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


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


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

2566c450da6474b9850c705046176f03.jpg



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


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


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


0c65636bdef9a7e514a63bfc94c25a75.jpg

火焰图


说到火焰图,这里就不得不提一个人 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

相关文章
|
7月前
|
数据可视化 Java uml
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
362 1
|
7月前
IntelliJ IDEA 自定义控制台输出多颜色格式功能 --- 安装Grep Console插件
IntelliJ IDEA 自定义控制台输出多颜色格式功能 --- 安装Grep Console插件
1293 0
|
2月前
|
人工智能 IDE 开发工具
给IntelliJ IDEA添加AI功能
这篇文章讲解了如何在IntelliJ IDEA中安装和使用阿里云开发的通义灵码插件,以增强IDE的人工智能辅助编程功能。
438 0
给IntelliJ IDEA添加AI功能
|
开发框架 前端开发 Java
【IntelliJ IDEA】idea 实用功能Auto Import:自动优化导包(自动删除、导入包)
【IntelliJ IDEA】idea 实用功能Auto Import:自动优化导包(自动删除、导入包)
613 0
|
6月前
|
缓存 IDE Java
IntelliJ IDEA 2023.1 正式发布,看看又多了那些神仙功能..
IntelliJ IDEA 2023.1 正式发布,看看又多了那些神仙功能..
93 0
恕我直言,IDEA的这个分析功能,只有不到10%的程序员知道
最近,有同学问我,为什么你如此钟爱IDEA? 因为你越用越顺手,还能不断给你惊喜,让你乐此不疲的去挖掘它的功能。
|
7月前
|
SQL Java 关系型数据库
在IDEA中配置MySQL数据库连接以及在使用mybatis时设置sql语句的代码提示功能
在IDEA中配置MySQL数据库连接以及在使用mybatis时设置sql语句的代码提示功能
|
安全 IDE Java
IDEA快捷键总结和各种实用功能
IDEA快捷键总结和各种实用功能
208 1
|
SQL IDE Linux
IDEA:7个强大功能助你高效编码和优质工作!
IDEA:7个强大功能助你高效编码和优质工作!
74 0
|
程序员 开发工具 git
震精!IDEA不为人知的功能竟被鹅厂用400页IntelliJ文档讲清楚了
这就是为什么在这种情况下,编辑器是屏幕上唯一可见的,具有所有其他与编码无关的功能的专用快捷方式。而且IDEA代表集成开发环境。 它是多种工具的组合,使软件开发过程更容易,更健壮,更不容易出错,为了帮助开发人员组织他们的工作流程,IntelliJ IDEA为他们提供了一个惊人的工具集,包括反编译器,Docker支持,字节码查看器,FTP和许多其他工具