【发布时间】:2013-03-09 08:56:16
【问题描述】:
我正在比较我们一个项目的两个分支的性能,一个比另一个慢得多。我注意到一个的 GC 运行计数更高(见下图)。
更有趣的是,运行时间要高出许多倍,远远超过额外运行所能解释的。什么可以解释运行次数增加 40%(ish),运行时间增加了 6 倍?更大的物体?对象太多?还有哪些旋钮可以在这里调整,有什么效果? (一些好的链接可以作为答案)
【问题讨论】:
-
这是一个很复杂的事情,要在论坛里回答。在任何情况下,您都可以首先检查您是否创建了比以前更多的对象,其中有多少在第一代中死亡,有多少正在过渡到下一个,并尝试弄清楚您是否可以创建更少的对象。
-
没有一个灵丹妙药来回答这个问题。如果您正在寻找有关调整垃圾收集的信息:oracle.com/technetwork/java/javase/gc-tuning-6-140523.html
-
这些是小收藏还是全收藏?如果您尝试增加新尺寸,您会看到什么?
-
由于重构,出现了更多的字符串对象。我现在将使用 StringBuilder 来减轻一些负担。
标签: java optimization garbage-collection