为什么IntelliJ IDEA挂在“索引”上?

问题描述 投票:45回答:12

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

IDEA几天前对我来说工作得很好,但是有一天突然间,在“索引”阶段,打开项目后它开始挂起。我没有更新IDEA,并且我的项目没有任何改变。打开项目后,IDE的UI会挂起,进度条中只有一小部分可以完成“索引”。每隔5到10分钟左右,它会冻结一次,进度栏会向前爬行一点,然后IDE再次冻结几分钟。这会在15分钟到一个小时之间的任何位置重复发生,直到最终完成索引编制,此后它又挂了5-10分钟,什么也不做,直到最终解锁并让我发展。

尽管发生这种情况,但我的系统反应迟钝-Firefox选项卡需要很长时间才能切换,并且滚动它们的时间很长。打开新的终端窗口需要很长时间。切换窗口通常需要一段时间。在htop中,我的一个CPU内核的负载为100%,其余的则为正常负载,并且使用了大约6GB的RAM(在此系统空闲时,这是相当正常的负载。)

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

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

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

java intellij-idea ide
12个回答
42
投票

尝试Invalidating the cache and restarting IntelliJ

File菜单中,选择Invalidate Caches / Restart ...,然后单击Invalidate and Restart按钮。


0
投票

我在IntelliJ 2017.3.2中遇到了相同的问题。当我单击索引进度条时,我注意到它已挂在构建目录中的某个目录上。当我执行gradlew clean删除了该目录时,索引编制就可以继续进行。


0
投票

我遇到此问题,并已解决:


-1
投票

我能够通过从项目中删除所有“目标”文件夹来解决此问题。


20
投票

我终于明白了。解决的办法是……比较奇怪。 TL; DR:在strace下运行。请继续阅读以获取更详细的说明。

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

这给了我一些非常奇怪的结果:strace喷出了几乎恒定的段错误。不仅如此,而且IntelliJ的运行也很好,不会花很长时间建立索引。

与朋友协商后,我了解到在Arch Linux上,每次发生段错误时,systemd都会记录进程内存的转储,除非连接调试器,否则除外strace被视为调试器。当由于所有段错误而导致继续记录内存转储时,Arch破坏了我的磁盘,因此为什么索引要花这么长时间,因为它在争夺磁盘I / O。

我目前的解决方案是仅在strace下运行IntelliJ。但是,我将进一步调查该问题,因为我认为java不应进行过多细分。


12
投票

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

更新:Intellij将跳过大于50kb的索引文件。如果您有很多库或很多大文件(一行太多或一行太多),请尝试此操作]


8
投票

我在Mac OS X上的2016.2版本中也遇到了这个问题。我不得不退出程序以终止该应用程序,然后删除了.idea文件夹。下次我启动IntelliJ时,一切工作正常,对项目进行索引没有问题。


5
投票

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

添加以下行(注意开头的#符号)

#com.intellij.util.indexing:trace

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

根据索引存根的请求来计划对文件:// C:/dev/tools/ruby/lib/ruby/2.2.0/x64-mingw32/win32ole.so的索引编制

我们的项目未使用win32ole,因此我将文件移至安全位置并重新启动我的IDE ... Bingo,问题消失了,在有效地使用intellij作为比笔记本电脑更智能的将近一年之后,索引终于完成了红宝石编辑器。


2
投票

就我而言,我发现Intellij实际上正在尝试使用项目根目录下的日志为50GB目录建立索引。确保如果有这样的目录,则在IDE中将其标记为“ Excluded”。

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


1
投票

过去在某些Scala项目中遇到相同的问题。我已经安装了IDEA 16 EAP(https://confluence.jetbrains.com/display/IDEADEV/IDEA+16+EAP),问题已经解决了。


1
投票

在PhpStorm中,为我解决的问题是从索引中排除了不需要索引的文件夹(特别是供应商文件夹,缓存文件夹以及一些包含数千张图像的资产文件夹)。立刻,它开始取得进展并完成。

为此:

  1. 在项目目录列表中,右键单击要排除的文件夹
  2. 将目录标记为
  3. 排除

1
投票

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

  1. 杀死intellij,重新开始
  2. [当它开始并且即将加载项目时,请快速并取消打开该项目。这样,您将最终得到一个小窗口,其中包含以前打开的项目的列表和一些菜单项。
  3. 打开菜单>插件,将其全部禁用
  4. 重新启动intellij构想,打开任何项目。
  5. 如果上面的第4步成功(发生在我身上),请一一尝试启用插件,以查看导致错误的插件。对我来说,它是JetBrains

中的Kubernetes插件。
© www.soinside.com 2019 - 2024. All rights reserved.