我的应用程序分析显示了大量的垃圾收集开销。分析器没有深入到垃圾收集。我该怎么做才能减少这种开销?
我有许多短命的arraylists和一些长寿的,只有在应用程序关闭时才会死亡。
答案 0 :(得分:7)
基本上你应该减少垃圾收集器的工作。有一些“模式”可以产生大量的工作。
所以在你的情况下,我猜你或者你有一个'中年'危机与短命的名单。或者你简单地分配像疯狂的列表。
在第一种情况下:尝试缩短列表的寿命。我无法告诉您应用程序的解决方案是什么样的。
在第二种情况下:尽量避免分配这么多列表。也许你可以使用正确的价值类型?还是固定大小的数组?或者以更少的列表需要更改代码的结构?
无论如何,我建议您了解一下您的应用情况,看看您分配的内存量以及第一代可以收集的内容。
答案 1 :(得分:5)
如果你有太多的垃圾收集开销,减少你的垃圾。尝试重用列表(预先分配并使用它们,完成后清除它们)。
如果您正在使用带有值类型的ArrayList,请尝试切换为使用List<T>
代替。
答案 2 :(得分:1)
如果垃圾收集开销成为一个严重的性能问题,那么您必须查看您的设计并重新评估您正在创建的短期对象的数量。
答案 3 :(得分:0)
如果此应用程序作为服务运行,或者在返回用户界面之前执行大量工作,则可能需要更改垃圾收集模型。
如果没有其他细节,很难给出好的推荐。