为什么IntelliJ IDEA挂在"索引"上?

App*_*ash 44 java ide intellij-idea

我在Arch Linux上运行i7-5930k 6核CPU和64GB DDR4 RAM,我正在使用IntelliJ IDEA 14.

几天前,IDEA对我来说工作得很好,但是有一天,突然之间,在"索引"阶段开始项目后,它开始挂起了.我没有更新IDEA,也没有改变我的项目.IDE的UI在打开项目后挂起,只需要一小段"索引"完成的进度条.每隔5-10分钟左右解冻,进度条向前爬一点,然后IDE再次冻结几分钟.这种情况反复发生在15分钟到1小时之间,直到它最终完成索引,此时它再挂5-10分钟,在最终解锁并允许我开发之前.

虽然这种情况正在发生,但我的系统相当反应迟钝 - Firefox标签需要很长时间才能切换,而滚动它们是滞后的.打开一个新的终端窗口需要很长时间.通常切换窗口需要一段时间.在htop,我的一个CPU内核以100%加载,而其余的CPU负载正常,并且使用了大约6GB的RAM(当系统空闲时相当正常的负载.)

我尝试过的事情没有帮助:

  • 删除缓存文件夹
  • 删除整个〜/ .IntelliJIDEA14文件夹
  • 重新安装IntelliJ包
  • 从JetBrains网站手动下载IntelliJ并从我的下载文件夹运行它(看看Arch AUR包是否有问题)
  • 配置IntelliJ以使用我的系统JVM和Maven进行导入而不是其嵌入式工具
  • 打开多个不同的项目(不仅仅是我最初遇到的问题.)

这个问题确实伤害了我的工作流程,如果有人对此有任何解决方案,我会非常感激.

Mot*_*tti 42

尝试使缓存无效并重新启动IntelliJ.

在" 文件"菜单中,选择"使高速缓存/重新启动无效...",然后单击" 无效并重新启动"按钮.

  • 这对我有用,但你必须快速,好像你不能快速到达菜单,它再次冻结. (10认同)
  • 另外:还有一些选项可用于使缓存无效。仅标记“清除下载的共享索引”就足够了 (2认同)

App*_*ash 20

我终于搞清楚了.解决方案是......相当奇怪.TL; DR:运行它strace.继续阅读以获得更详细的解释.

当我决定运行IntelliJ strace以查看它打开的文件以确定它是否是文件系统瓶颈时,我遇到了它.

这给了我一些非常奇怪的结果:strace喷出了几乎恒定的段错误.不仅如此,IntelliJ运行得很好,而不是永远指数.

在与朋友协商后,我了解到在Arch Linux上,每次发生段错误时,systemd都会记录进程内存的转储,除非连接了调试器.strace被认为是一个调试器.Arch因为所有的段错误而不断记录内存转储时,正在颠覆我的磁盘,因此为什么索引耗时这么长,因为它正在争夺磁盘I/O.

我现在的解决方案是简单地运行IntelliJ strace.但是,我会进一步研究这个问题,因为我认为不java应该那么多.

  • 呃,什么……? (7认同)

Buf*_*ffK 12

编辑Intellij [VERSION] /bin/idea.properties,set idea.max.intellisense.filesize=50

更新: Intellij将跳过大于50kb的索引文件.如果您有许多库或许多大文件(太多字符一行或太多行)

  • 虽然您的提示可能会回答这个问题,但绝对没有提供任何可能解决问题的提示.这使得答案(如果有的话)对其他人不那么有用.所以,请考虑解释一下你的提示. (3认同)
  • https://www.jetbrains.com/help/idea/tuning-the-ide.html#configure-platform-properties (2认同)

Har*_*rry 12

我今天在 Mac 上遇到了这个问题。在我能够进入菜单并使缓存失效之前它就会挂起。

我使用以下命令从命令行删除了缓存,它对我有用。

rm -rf ~/Library/Caches/JetBrains/IntelliJIdea*
Run Code Online (Sandbox Code Playgroud)

之后它就启动了,没有任何问题。


khu*_*rav 11

我在最新的IntelliJ Idea 2019.3中遇到了类似的问题,所以也许它会有所帮助。对我来说,问题出在其中一个插件上。卸载、重新安装和清理缓存都没有帮助。我的步骤是:

  1. 杀死英特尔利杰。重新开始吧。
  2. 当它启动并即将加载项目时,请快速取消打开项目。这样,您最终会看到一个小窗口,其中包含以前打开的项目的列表和一些菜单项。
  3. 打开菜单 > 插件,将其全部禁用。
  4. 重新启动 Intellij Idea。打开任何项目。

如果上述步骤 4 成功(这发生在我身上),请逐一尝试启用插件以查看哪个插件导致错误。对我来说,它是JetBrains的Kubernetes插件。


小智 8

我在Mac OS X上的版本2016.2也有这个问题.我不得不强制退出以结束应用程序,然后我删除了.idea文件夹.下次我启动IntelliJ时一切正常,它没有问题索引项目.

  • 想法2020.2,这个问题刚刚发生。“无效缓存/重新启动”没有解决索引问题。然而删除了 .idea 目录:-) (2认同)

小智 5

选择帮助 - >调试日志设置...

添加以下行(注意前导#符号)

#com.intellij.util.indexing:跟踪

重新启动IDE(不需要使缓存无效,因为这将导致它从头开始,而从故障点重新启动,无论如何,我重新启动后立即报告问题文件):

通过索引Stubs的请求调度file:// C:/dev/tools/ruby/lib/ruby/2.2.0/x64-mingw32/win32ole.so的索引

我们的项目没有使用win32ole,所以我将文件移动到一个安全的位置并重新启动我的IDE ...宾果,问题消失了,索引最终完成了近1年后有效地使用intellij作为一个比记事本稍微聪明的红宝石编辑器.


dux*_*ux2 5

就我而言,我发现 Intellij 实际上正在尝试使用项目根目录下的日志来索引 50GB 目录。确保如果您有这样的目录,它在 IDE 中被标记为“已排除”。

您可以在“索引状态”窗口中查看 IDE 当前正在索引哪个文件(通过单击工具栏中的索引消息进行访问)。您可能需要放大此窗口才能查看当前正在索引的文件的完整路径。