在IntelliJ下进行Scala调试非常缓慢。

3
我目前正在使用IntelliJ 10.5.4调试一个相对较小的Scala程序(Apache's Kafka),同时在另一个项目中运行多个Java应用程序。虽然Java应用程序表现良好,但是Scala调试非常缓慢,简单的“Make Project”需要2分钟,即使是基本的光标按键也需要1秒才能在屏幕上反映出来。
我以前使用过IntelliJ,在多个项目中同时运行最多6个应用程序,一点问题都没有。硬件也不是问题,这些都在最新的Macbook Pro下运行(256GB SSD,8Gb RAM,四核i7),使用Java 1.6.0_31。
有没有任何技巧可以使Scala在IntelliJ下进行调试时表现良好?或者,人们在Scala调试方面使用什么工具?
4个回答

4

2

简述

关于编译时间,你是否启用了FSC?这可以大大提高Scala的编译速度。

关于整体速度,你可能需要调整JVM设置。Scala可能会占用更多内存,因此你可能需要增加-Xmx值以减少垃圾回收时间。如果太高,则可以将其降低。或者更换垃圾收集器。以下是我的参考值:

<key>VMOptions</key>
<string>-ea -Xverify:none -Xbootclasspath/a:../lib/boot.jar -XX:+UseConcMarkSweepGC </string>
<key>VMOptions.i386</key>
<string>-Xms128m -Xmx512m -XX:MaxPermSize=250m -XX:ReservedCodeCacheSize=64m</string>
<key>VMOptions.x86_64</key>
<string>-Xms128m -Xmx800m -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=64m -XX:+UseCompressedOops</string>

实际找出问题

你可能需要进行一些性能分析,以查明实际存在的性能问题。最简单的起点是打开活动监视器,查看内存是否不足、CPU利用率是否高或磁盘活动是否频繁。这至少可以让你知道发生了什么。你有SSD,所以磁盘 I/O 可能不是一个问题。

你可能需要对 IDEA 自身进行性能分析,比如使用YourKit Java Profiler运行它。这可能会告诉你一些有趣的东西,比如 IDEA 是否花费过多的时间在垃圾回收上。

总的来说,在 IntelliJ 上,Scala 似乎比 Java 更消耗内存。可能是你设置的 -Xmx 太低,导致过多的垃圾回收。或者可能设置得太高,因此当进行垃圾回收时,应用程序会出现停顿。更改使用的收集器可能有所帮助,但对于所有收集器都存在设置 -Xmx 太高会导致性能问题的收益递减点。


看起来 FSC 是正确的选择,我已经尝试在 IntelliJ 中启用它,但是一直遇到问题。仍在尝试其他几个方法,并尝试调整您拥有的内存选项。 - mjuarez
mjuarez - 我曾经在旧版本的插件上遇到过问题,但是很长一段时间以来都没有了。祝你好运! - leedm777

1
我发现我在一个列表方法中不小心设置了断点。这使得在调试Scala项目时,Intellij非常缓慢,但是当我取消断点后,Intellij又恢复正常了。
可以通过点击ctrl+shift+F8找到断点列表。

0

截至2.0.1版本,我使用http://scala-ide.org/download/current.html的Eclipse非常稳定。

目前我的项目基于Maven,包含Java和Scala代码。我可以轻松地跨语言边界进行调试,没有任何问题。


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