【问题标题】:Scala debugging under IntelliJ is horribly slowIntelliJ 下的 Scala 调试速度非常慢
【发布时间】:2012-05-10 03:34:06
【问题描述】:

我目前正在使用 IntelliJ 10.5.4 跟踪一个相对较小的 Scala 程序(Apache 的 Kafka),同时在另一个项目中运行其他几个 Java 应用程序。虽然 Java 应用程序运行良好,但 Scala 调试速度非常慢,一个简单的“Make Project”将轻松花费 2 分钟,甚至基本的光标键击每次都需要一秒钟才能反映在屏幕上。

我之前使用过 IntelliJ,在多个项目下同时运行多达 6 个应用程序,它完全没有任何问题。硬件也不是问题,这一切都在 Java 1.6.0_31 下的最新 Macbook Pro(256GB SSD、8Gb RAM、四核 i7)上运行。

在 IntelliJ 下调试时,是否有任何提示/技巧可以使 Scala 表现得体?或者,人们用什么来进行 Scala 调试?

【问题讨论】:

    标签: java macos scala ide intellij-idea


    【解决方案1】:

    试试latest Idea 11 EAPlatest Scala plugin。它对我很有效。

    【讨论】:

      【解决方案2】:

      tl;博士

      re:编译时间,do you have FSC enabled?这极大地帮助了 Scala 编译时间。

      re:整体缓慢,您可能需要tweak your JVM settings。 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>
      

      其实是想明白了

      您可能需要进行一些分析才能找出性能问题的真正原因。最简单的方法是打开Activity Monitor 以查看内存是否低、CPU 利用率高或磁盘活动是否高。这至少会给你一个关于发生了什么的线索。你有一个 SSD,所以磁盘 I/O 可能不是问题。

      您可能需要分析 IDEA 本身,例如使用 YourKit Java Profiler 运行它。这可以告诉您一些有趣的事情,例如 IDEA 是否花费了过多的时间进行垃圾收集。

      不过,总的来说,Scala 似乎比 IntelliJ 上的 Java 更占用内存。您可能将-Xmx 设置得太低,导致垃圾收集过多。或者它可能设置得太高,所以当它进行垃圾收集时,你会在应用程序中暂停。更改您使用的收集器可能会对此有所帮助,但对于所有收集器而言,存在收益递减点,将-Xmx 设置得太高会导致性能问题。

      【讨论】:

      • 似乎 FSC 是要走的路,我尝试在 IntelliJ 下启用它,但一直遇到问题。仍在尝试更多的东西,并会尝试摆弄您拥有的内存选项。
      • mjuarez - 我在使用旧版本的插件时遇到了问题,但很长一段时间都没有问题。祝你好运!
      【解决方案3】:

      我发现我不小心在 List 的方法之一中设置了断点。它在调试 scala 项目时使 intellij 超级慢,但是当我取消断点时,intellij 又变得正常了。

      点击ctrl+shift+F8可以找到断点列表。

      【讨论】:

        【解决方案4】:

        从 2.0.1 开始,带有 http://scala-ide.org/download/current.html 的 Eclipse 对我来说运行良好。

        我的东西目前是基于 maven 的,项目结合了 Java 和 Scala。我可以毫无问题地跨语言进行调试。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-25
          相关资源
          最近更新 更多