我在Arch上运行,在一个i7-5930k6核心CPU和64 14的DDR4内存上运行,我使用的是IntelliJ IDEA 14。
几天前,这个想法对我来说还不错,但是有一天,突然间,它在打开一个项目之后,在“索引”阶段开始挂起。我没有更新想法,也没有改变我的项目。IDE的UI在打开项目后挂起,只有一小块“索引”完成的进度条。每5-10分钟左右,它就会解冻,进度条会向前爬行一点,然后IDE再冻结几分钟。这种情况在15分钟到1小时之间的任何地方都会反复发生,直到它最终完成索引,此时它将挂起5-10分钟,什么也不做,直到它最终解锁并允许我进行开发。
当这种情况发生时,我的系统相当缺乏响应-- Firefox选项卡需要很长时间才能切换,在其中滚动是滞后的。打开一个新的终端窗口需要很长时间。切换窗口一般需要一段时间。在htop中,我的一个CPU内核以100%的速度加载,而其余的内核有一个正常的负载,并且使用了大约6GB的内存(在这个系统空闲时相当正常的负载)。
我尝试过的那些没有帮助的事情:
这个问题真的伤害了我的工作流程,如果有人能解决这个问题,我会非常高兴的。
发布于 2015-09-19 21:03:46
我终于想出来了。解决办法是..。挺奇怪的。TL;DR:在strace下运行它。请继续阅读以获得更详细的解释。
当我决定在IntelliJ下运行strace来查看它打开的是哪些文件以确定它是否是文件系统瓶颈时,我突然发现了这个问题。
这给了我一些非常奇怪的结果:strace喷出了一个几乎恒定的分段断层流。不仅如此,IntelliJ运行得也很好,不会花很长时间去索引。
在咨询了一位朋友之后,我了解到,在Arch上,每次发生分段错误时,systemd都会记录进程内存的转储,除非调试器附加了。strace被认为是调试器。由于所有的段错误,Arch一直在记录内存转储,因此索引花费了这么长时间,因为它正在为磁盘I/O而斗争。
我现在的解决方案是简单地在strace下运行strace。但是,我将进一步研究这个问题,因为我认为java不应该分割那么多的错误。
发布于 2016-07-19 10:51:22
试试Invalidating the cache and restarting IntelliJ。
在“文件”菜单中,选择“失效缓存/重新启动.”,然后单击“失效并重新启动”按钮。
发布于 2016-06-04 06:27:29
编辑IntellijVERSION/bin/idea.properties,设置idea.max.intellisense.filesize=50
更新:如果您有许多库或许多大文件(字符太多、一行多或行多), Intellij将跳过比50kb.try大的索引文件。
https://stackoverflow.com/questions/32550292
复制相似问题