我们有一些代码,我们在Java中运行,并使用IKVM在.NET中运行。 Java代码,完全相同的源代码,在Java中运行速度快5到10倍。
我们看到的最大差异是.NET端30%或更多的时间都在垃圾收集器中。
我们可以采取哪些措施来缩短GC时间?
查看您的对象生命周期和(例如)检查您是否可以使用flyweights或object pool来最小化您创建的对象实例的数量。您创建的实例越少,必须收集的实例越少。分析代码,查看它使用的算法并搜索可以最小化gc事件的模式(通过分析发现)。你想要一枚银弹,但如果有一颗银弹,那么它可能已经启用了。