1

我的观点是,由于堆大小有限,JVM 是否需要更频繁地运行垃圾收集?实际上,它是性能杀手吗?

4

3 回答 3

0

要使用的最佳内存量可能是运行程序的最小堆的 2-5 倍。GC 运行的频率与 GC 后的可用内存量成反比。

实际上,它是性能杀手吗?

这取决于您的应用程序,但我认为它是。


鉴于 RAM 与您的时间成本相比相对便宜,我倾向于确保我有足够的 RAM。您可以以不到 80 美元的价格购买 16 GB。

于 2012-10-10T09:11:54.200 回答
0

这种取决于您使用的 gc 和 jdk 的算法。正常的 gc 是一个杀手,因为它会停止其他线程的执行。如果您使用的是 jdk 1.6 或更高版本,您可以使用例如 visualVM 使其可见。有不同的 gc 算法来克服这个问题。在这里,我会将您发送到文档,因为它们的差异最好

于 2012-10-10T09:12:05.623 回答
0

在应用程序的内存需求和您给它的内存分配(使用 Xmx)之间找到适当的平衡是一项关键的性能调整活动。

是的,你想让堆足够大,这样 JVM 就不会在持续 GC 上崩溃,这绝对会成为性能杀手。

您需要的堆大小完全取决于应用程序。

于 2012-10-10T09:15:51.877 回答