当前位置:  开发笔记 > 编程语言 > 正文

如何提高垃圾收集性能?

如何解决《如何提高垃圾收集性能?》经验,为你挑选了1个好方法。

可以使用哪种优化模式来提高垃圾收集器的性能?

我的理由是我使用Compact Framework做了很多嵌入式软件.在慢速设备上垃圾收集可能会成为一个问题,我想减少垃圾收集器启动的次数,当它发生时,我希望它能更快地完成.我还可以看到使用垃圾收集器而不是垃圾收集器可以帮助改进任何.NET或Java应用程序,尤其是重型Web应用程序.

以下是我的一些想法,但我没有做任何基准测试.

重用临时类/数组(保持分配计数)

将活动对象的数量保持在最低(更快的收集)

尝试使用结构而不是类

ctacke.. 12

关键是要了解CF GC如何用于分配.它是一个简单的标记 - 扫描,非代际GC,具有触发GC的特定算法,以及在收集后会导致压缩和/或投球的因素.在应用程序级别几乎没有什么可以控制GC(唯一可用的方法是Collect,它的使用非常有限,因为你无论如何都不能强制压缩).

对象重用是一个良好的开端,但简单地保持对象数量较少可能是最好的工具之一,因为所有的根都必须遍历任何集合操作.保持走路是一个好主意.如果压缩正在扼杀你,那么阻止段碎片会有所帮助.对象> 64k在这方面可能会有所帮助,因为它们获得了自己的段,并且与较小的对象区别对待.

为了真正了解CF GC的工作原理,我建议观看有关CF内存管理的MSDN网络广播.



1> ctacke..:

关键是要了解CF GC如何用于分配.它是一个简单的标记 - 扫描,非代际GC,具有触发GC的特定算法,以及在收集后会导致压缩和/或投球的因素.在应用程序级别几乎没有什么可以控制GC(唯一可用的方法是Collect,它的使用非常有限,因为你无论如何都不能强制压缩).

对象重用是一个良好的开端,但简单地保持对象数量较少可能是最好的工具之一,因为所有的根都必须遍历任何集合操作.保持走路是一个好主意.如果压缩正在扼杀你,那么阻止段碎片会有所帮助.对象> 64k在这方面可能会有所帮助,因为它们获得了自己的段,并且与较小的对象区别对待.

为了真正了解CF GC的工作原理,我建议观看有关CF内存管理的MSDN网络广播.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有