gpt4 book ai didi

java - 惯用 scala 中 jvm 选项的指南

转载 作者:IT王子 更新时间:2023-10-28 23:32:48 29 4
gpt4 key购买 nike

好的,我知道我应该对我的特定应用程序进行基准测试,等等,但是:

-Xmx 的默认 JVM 设置、默认垃圾收集器等,对于大多数典型的 Java 程序来说是合理的默认设置,并且可能不适合惯用的 Scala 代码(部分因为惯用的 Scala 会产生更多的“垃圾”)。

所以我正在寻找可供选择的建议。典型的 Scala 程序是否需要更高的 -Xmx 设置?某些 JVM 是否比其他 JVM 更适合 scala?与 Java 通常默认的相比,Scala 的不同垃圾收集器(-XX:+UseParallelGC vs XX:+UseConcMarkSweepGC)通常是更安全/更好/更快的猜测/赌注/默认值吗?对于 Scala 代码,我还应该特别考虑其他选项吗?以什么方式?

既然生成了更多的临时对象,那么默认情况下通常应该给“年轻”一代更多的空间吗?还是应该less 通常给年轻代空间以强制进行更频繁的垃圾回收?其他几代人呢?

当然,我仍然需要为我的特定应用程序调整这些东西,但通常我猜测,对于一个典型的 Scala 程序,我的起点可能与它在 Java 中的不同。

我确实发现自己在某些特定应用程序中遇到了内存不足错误和“达到 GC 开销限制”,或者只是让应用程序在垃圾收集暂停上花费了太多时间。在某种程度上,我可以通过调整选项来解决这些问题,但我想听听其他经验、一般原则和起点。

最佳答案

这是来自 scala 用户,因此纯粹基于个人经验。简而言之:我倾向于做很多 JVM 优化,因为我发现一点点努力可以让你走很长一段路,但我没有找到任何特定于 scala 的东西。

正如您所说,JVM 默认值充其量是合理的。设置适当的堆大小、选择正确的 GC、使用服务器 VM、调整生成大小等都可以提高 scala 应用程序的性能,就像它对普通 java 应用程序一样。这并不是说 java 和 scala 的配置文件是相同的,只是您的实际应用程序可能会产生更大的影响。

从理论上来说,我唯一希望关心的是新一代的大小,因为 scala 可能会产生更多的短期垃圾,而更大的新一代可能会在这里对 VM 有所帮助。

关于java - 惯用 scala 中 jvm 选项的指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12398046/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com