为什么 IntelliJ IDEA 挂在“Indexing”上?

新手上路,请多包涵

我在 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 并从我的下载文件夹运行它(查看 Arch AUR 包是否有问题)
  • 配置 IntelliJ 以使用我的系统 JVM 和 Maven 代替其嵌入式工具进行导入
  • 打开多个不同的项目(不仅仅是我最初遇到问题的项目。)

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

原文由 AppleDash 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

我终于想通了。解决方案是……相当奇怪。 TL;DR:在 strace 下运行它。继续阅读以获得更详细的解释。

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

这给了我一些非常奇怪的结果: strace 喷出几乎恒定的段错误流。不仅如此,IntelliJ 运行得很好,不需要永远进行索引。

在咨询了一位朋友之后,我了解到在 Arch Linux 上,systemd 会在每次发生段错误时记录进程内存的转储, 除非附加了调试器strace 被认为是调试器。由于所有段错误,Arch 在不断记录内存转储时正在抖动我的磁盘,这就是为什么索引需要这么长时间,因为它正在争夺磁盘 I/O。

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

原文由 AppleDash 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

在“ 文件”菜单中,选择“使 缓存无效/重新启动…” ,然后单击“ 无效并重新启动”按钮。

原文由 Motti 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题