Eclipse 执行数千个不必要的文件请求

Eclipse performing several thousand unnecessary file requests

我在一个 Eclipse 项目中有一个包含几个(将近 800 个)JSON 文件的目录。我注意到刷新此目录会冻结 Eclipse (Mars)。

该目录位于 Ubuntu Linux 服务器 运行ning Samba 4.1.6 上,我在 Windows 8 上使用 Eclipse x64。

我已经 运行 strace 处理了相关的 smbd 进程,我看到 Eclipse 对所有文件重复执行 stat()(我希望仅一次):

newfstatat(32, "MYFILE-c15771bf38edb6f27f2e3a468eeda58f.json", {st_mode=S_IFREG|0644, st_size=1428, ...}, 0) = 0
stat("path/to/MYFILE-c15771bf38edb6f27f2e3a468eeda58f.json", {st_mode=S_IFREG|0644, st_size=1428, ...}) = 0
stat("path/to/MYFILE-c15771bf38edb6f27f2e3a468eeda58f.json", {st_mode=S_IFREG|0644, st_size=1428, ...}) = 0

呼叫以三个为一组,一个 newfstatat 和两个 stat。在我写作期间以及自从我开始 strace 以来,已累积 846 次对同一文件的请求:

$ grep MYFILE-c15771bf38edb6f27f2e3a468eeda58f.json stracefile | wc -l
846

所有其他文件也是如此(我的 strace 文件现在有 1352971 行,并且还在增长)。

Eclipse 一直处于冻结状态 ("Not responding")。幸运的是,我有一个打开的文件,其中有未提交的更改,我很想恢复。

在提交 Eclipse 错误之前,有人遇到过这种行为吗?有没有办法让 Eclipse 停止这种对静态文件状态的无休止查询,足够长的时间来保存一个编辑器 window? (剪切和粘贴不起作用)。

这可能是什么原因造成的?一个目录中的文件太多? (特定类型)?与 Samba 冲突?

不是一个完整的答案(我可能是在提交错误),而是一个临时的解决方法来解锁 Eclipse:

  • 登录到 Linux 服务器
  • 将目录中的所有文件移动到其他地方
  • 等待大约 30 秒,让 Eclipse 抛出一堆错误,因为它正在寻找的文件消失了
  • Eclipse 现已解锁
  • 关闭 Eclipse 中的文件夹
  • 将目录中的文件移回
  • 退出服务器
  • 自我注意:不要再次在 Eclipse 中打开该文件夹。