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 中打开该文件夹。
我在一个 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 中打开该文件夹。