前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >IntelliJ IDEA为什么卡顿?IntelliJ IDEA 2024.3又是如何优化的呢?

IntelliJ IDEA为什么卡顿?IntelliJ IDEA 2024.3又是如何优化的呢?

作者头像
程序视点
发布2025-01-17 20:11:34
发布2025-01-17 20:11:34
2110
举报
文章被收录于专栏:程序小小事程序小小事

前言

为什么IDEA打开项目这么慢?

对于这个问题,已经有无数人问过我了~~

用我们技术团队小伙伴的话来回答下内存吞噬者,和谷歌并称绝代双骄!!!

IntelliJ IDEA 无疑拥有着强大和广泛的功能,但这也会使其在某种程度上占用资源--打开IntelliJ IDEA,再看看你的CPU占用就知道啦!

IntelliJ IDEA 2024让编码更快

IntelliJ IDEA 打开项目时,需要等待一会儿已经时很常见的事情了!因为 IntelliJ IDEA 需要加载和同步项目、执行索引以及执行许多其他小操作来启用它所具有的所有有用功能。

IntelliJ IDEA 2024已经就缩短编码时间和 IDE 启动响应速度做出很多优化了!

大家可以前往官方下载!小二哥这里提供有专属的激活服务。关注WX公众号【程序视点】,回复vip,进行了解和订阅!

IntelliJ IDEA打开项目为什么慢

如果大家查看 2023.2 之前的 IntelliJ IDEA 版本,就会发现:IDE 必须等待项目的 Maven 或 Gradle 项目模型完全同步,然后才能开始索引

在等待索引完成前,IDE 的所有智能功能(包括代码突出显示和导航)都被禁用。只有在索引完成后才能使用它们。

同步和索引项目所需的时间随着项目的规模的增加而增加。越大的项目对 IDE 来说越复杂,老版本中,打开项目待几分钟才能开始工作已经是家常便饭了~

在加载项目时,要执行的步骤很多多,即使是较小的步骤也可能花费大量时间,从而导致 IntelliJ IDEA 执行缓慢的感觉。

对于这个情况,官方的说法是:一直将改善这种情况作为一项高优先级任务。一起来看看吧!

(它说是就是吧!项目打开慢,小二哥的建议是“上固态可能来得快些~~”)

官方的改进

官方 在 IntelliJ IDEA 中改进启动和项目打开的问题上,做了长期的努力和沉淀,比如通过调整 IntelliJ IDEA 的索引方法,以获得更显著的时间优势。

还有像优化代码和架构、使用更好的硬件、并行化等多个角度!(居然也提到硬件,可能小二哥的固态硬盘也应该要记大功一件~~ 哈哈 ~~)

官方优化的成功大概是这样一个数据:

我们将应用程序的启动应用程序性能指数 (Apdex) 提高到最高类别,得分为 0.94,将多线程索引的速度提高了 25%,并消除了并行索引期间不必要的锁,从而减少了其他线程必须等待此类锁可用的时间。

同时,官方也指出“这是一个漫长的旅程,因为重构可能会对 IDE 中的其他子系统产生影响,并且需要在更长的时间内进行仔细评估”

哈哈~~ 这个对于我们开发者来说,感觉也就是有那么一回事:官方在处理这事儿了,改进成果也有,至于效果,大家自行体验~~

最有希望的方案

在这之前,小二哥得说一下:这里的“最有希望的方案”是个人想法,不是官方表态

在我们开发者看来,IDEA打开项目快不快,其实是在于我们的使用体验感知上面。

只要项目打开了,能够更早开始工作,我们就会察觉到性能的提高。(注意,这里是项目打开,而不是项目加载全部完成)

官方也是基于这点,在新的版本中持续进行优化的。我们开发者大多数认为当可以看到项目结构和适当的代码突出显示时,IDEA 就可以开始工作了。

于是乎!官方将同步和索引过程拆分为几个阶段并以异步方式运行它们,这样就可以让开发更快地访问他们的代码。

这里有两个阶段:

第 1 阶段:跳过解析依赖项

在第一阶段,即尽可能早地在项目加载过程中进行,IntelliJ IDEA 不解析依赖项或连接到互联网。

这个阶段只是提供了一个足够准确的模型,以允许 IDE 显示项目树、为项目最必要的部分编制索引,并提供一些基本的智能功能。

当然,在这个阶段之后,某些依赖项可能仍然缺失,从而导致解析问题和代码被标记为红色的情况,哪怕它是正确的。

IDE 实际上知道这些误报错误,就像我们编程时提示我们语法错误一样!

但IDEA需要抑制由于缺少依赖项而导致的错误,在单个语言支持级别解决这些错误。因为项目并没有加载完,不应该去报错!

第 2 阶段:下载并解决依赖项

在第一阶段结束后,IntelliJ IDEA 会下载所有插件和依赖项,正确解析所有配置,并为 IDE 提供完全准确的模型以供使用。然后,根据完整模型更新索引。

通过第二阶段来补充完成整个项目的加载过程!

通过这种两阶段方法,我们可以更快地获得功能几乎齐全的 IntelliJ IDEA 版本,同时仍然可以下载和解析依赖项。一起来鸟瞰整个过程:

此外,官方使许多功能可以在索引尚未准备就绪时工作,从而进一步缩短编码等待时间(官方叫"reducing time-to-code",我就先这么翻译着吧)。

就这样,让我们开发者在项目完全加载前,就能触及代码,感觉可以工作了,从而在感知体验上缩短了时间!

如果按照这种代码触及,部分功能可用作为项目打开的标准,那这个等待时间的优化确实很不错了!

通俗点说:我可以忍受IDEA慢慢加载完成整个项目,但IDEA不能让我一直干瞪眼等着。于是,IDEA就分阶段加载,一个阶段好了,就给大家先用着些功能,然后IDEA在继续默默的加载剩下的部分...

在最新的统计中,在 2024.2 版本中,大约 10% 的开发者在整个同步和索引过程完成之前就开始编写了代码,但实际上整个项目加载还没有完成!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序视点 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • IntelliJ IDEA 2024让编码更快
  • IntelliJ IDEA打开项目为什么慢
  • 官方的改进
  • 最有希望的方案
    • 第 1 阶段:跳过解析依赖项
    • 第 2 阶段:下载并解决依赖项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档