Eclipse在复制/剪切JavaScript文件时卡住了

29

我安装了Eclipse Kepler和NodeEclipse插件。出于NodeEclipse性能的原因,我已经禁用了JavaScript文件的内容助手。

问题: 每当我在JS文件中复制或剪切某些行(ctrl+c / ctrl+x),CPU使用率会达到100%,并且eclipse进程会消耗所有内存(> 1GB)。我认为正在发生一些GC抖动。增加JVM最大内存是一个选项,但eclipse难道不应该足够1GB吗?

这可能是某种内存泄漏。这个具体问题是否与Nodeclipse有关?在eclipse中是否有任何解决方法/设置来禁用它?

编辑: 当我双击变量时,CPU会在3-4秒钟内跳到100%,然后下降。我已经禁用了标记出现次数。这仅适用于route / * .js文件,而不适用于public文件夹。进一步调查后,我发现注释掉包含require('<package-name>')的行可以解决此问题,为什么?


你使用的是 Kepler 还是 Kepler SR1? - nitind
使用 Kepler Service Release 1 - ankitjaininfo
1
也会卡顿,但是执行“标记出现位置”可以将卡顿大大降低(从5-10秒降至1秒)。Eclipse信息:Enide Studio 2014基于Eclipse 4.4 M4 Luna预览版。版本:0.11 构建ID:org.apache.maven.model.Build@7e6abaff - Tommy G.
4个回答

37

找到解决方案:

进入 窗口 > 首选项 > JavaScript > 编辑器 > 标记出现位置 并取消复选框选择。那就可以了。

问题原因:

当您按下 ctrl 进行复制/粘贴时,它会假定这是一个 "ctrl + 鼠标悬停" 操作,我们在点击方法/变量名称以达到其声明点或访问其文档之前要执行的操作。因此,它尝试查找鼠标光标下当前文本的所有出现位置,以及其声明点和文档。

希望能够帮助您 :)


5
您的意思是JS编辑器通过在按箭头键之前预先计算出现次数来预测用户的行为吗?谁会提出这种愚蠢的想法呢?难道没有针对这种事情的质量控制吗?我只有在百分之一或百分之二的情况下才会使用ctrl+箭头而不是ctrl+c/x/v。 - mwhs
在按下Ctrl并悬停鼠标时,通常会出现选项以转到光标所在的方法/变量的声明处。 我猜在JavaScript中,查找方法/变量的声明需要相当长的时间。 - Biman Tripathy

19

导航到 Window -> Preferences -> JavaScript -> Editor -> Typing -> When pasting

然后 取消勾选 Update imports

在我的情况下,性能得到了巨大的提升。特别感谢 @Alexander Taylor 留下的评论


谢谢您的留言,它让那个评论更加显眼,并且在我在bower_components目录中工作时,这实际上是我的解决方案。 - Sergio Rinaudo
1
我确认它提高了粘贴和复制的性能。这听起来很奇怪,但实际上当你粘贴时,Eclipse不再挂起。 - Lukasz Czerwinski

4

6
即使我正在处理一个小文件,但是在项目中有许多其他文件时,我也遇到了这个问题。Felipe在上面链接的问题中的答案对我起作用:禁用以下选项: 首选项/JavaScript/编辑器/键入{粘贴时}/更新导入 - Alexander Taylor
当我在bower_components目录中工作时,这对我来说是解决方案,谢谢! - Sergio Rinaudo

4

这是我听到的第一个与Nodeclipse性能相关的问题。

我认为内存使用限制是为了确保不良例程不会无限制地占用内存(并影响所有操作系统的性能)。通常情况下,Eclipse占用200-400MB。如果您的Eclipse平均值超过500MB,我猜您在一个Eclipse实例中安装了太多的插件。

为Nodeclipse开发人员提出问题https://github.com/Nodeclipse/nodeclipse-1/并提供确切的操作系统、Java、Eclipse、Nodeclipse版本。另外,由于这是性能问题,您应该提供您的PC配置CPU、RAM大小。没有这些确切的信息,就无法进行调查。您也可以尝试在其他PC上、其他Eclipse版本、其他Java版本等上自行比较,找到最佳组合。即使您自己发现解决方案,请还是提出问题。

仔细阅读http://www.nodeclipse.org/。(至少在使用之前应该阅读一些提示和获取帮助的方法。)我不确定这是否是Nodeclipse问题,但如果可以重现,则需要快速解决或提出Eclipse bugzilla bug(如果它与某个Eclipse项目有关)。

关于信息(截至Nodeclipse 0.10)
1)Nodeclipse有两个编辑器:基于JSDT和基于TextEditor。两者都具有代码完成功能。尝试使用基于TextEditor的编辑器可以确定问题是否与JSDT相关。
2)验证方面,使用JSHint验证。 JSHint在Rhino引擎上运行,速度不够快,可能需要在大型项目上花费时间。然而JSHint Integration是一个相当成熟的项目,并且有选项可以在发出一定数量的警告后停止验证。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接