好的,我知道我应该对我的特定应用程序进行基准测试和等等等等,但是:
-Xmx、默认垃圾收集器等的默认 JVM 设置是大多数典型 Java 程序的合理默认值,并且可能不适合惯用的 Scala 代码(部分原因是惯用的 Scala 会倾向于生成更多的“垃圾”) ”)。
因此,我正在寻找可供选择的建议。典型的 Scala 程序是否需要更高的 -Xmx 设置?某些 JVM 是否比其他 JVM 更适合 scala?与 Java 通常默认的相比,Scala 的不同垃圾收集器(-XX:+UseParallelGC vs XX:+UseConcMarkSweepGC)通常是更安全/更好/更快的猜测/赌注/默认值吗?对于 Scala 代码,我还应该特别考虑其他选项吗?以何种方式?
既然生成了更多的临时对象,那么是否应该默认给“年轻”一代更多的空间呢?还是应该减少通常给年轻代的空间来强制更频繁的垃圾收集?其他几代人呢?
当然,我仍然需要为我的特定应用程序调整这些东西,但通常我猜想对于一个典型的 Scala 程序,我的起点可能与 Java 中的不同。
我确实发现自己在某些特定应用程序中遇到了内存不足错误和“达到 GC 开销限制”,或者只是让应用程序在垃圾收集暂停上花费了太多时间。在某种程度上,我可以通过调整选项来解决这些问题,但我想听听其他经验、一般原则和起点。