use*_*157 7 performance garbage-collection
我只是在阅读几种编程语言的性能,我注意到垃圾收集经常被提及。垃圾收集是否会影响语言的性能?如果是,如何?
这里要记住的一件事是,没有垃圾收集的语言仍然必须分配和释放对象。垃圾收集允许循环的“空闲”部分批量发生,并且有时在应用程序相对空闲时发生。在内存限制最小的环境中,大多数集合甚至可能会推迟到程序完成为止。换句话说,高效的垃圾收集器有可能比传统平台中的常见做法更快……虽然我们还没有那么远,但这种情况一直在改进。
\n诀窍是,当垃圾收集确实发生时,收集器仍然必须花费资源来分析哪些内容可以访问,哪些内容不可访问,或者哪些内容的引用计数 > 0,哪些内容不能(取决于收集器的类型)。这是真正的性能损失。此外,此过程确实会短暂中断正常执行。
\n对于对延迟问题敏感的应用程序来说,中断尤其可能是一个重要因素。这恰好包括提供 Web 内容的常见场景。幸运的是,现在也有垃圾收集器模式可以减少这种影响。
\n结果是,对于大多数垃圾收集平台来说,收集器是评估性能时要考虑的因素之一。净效应是最小的 \xe2\x80\x94 甚至是净积极的!\xe2\x80\x94 在应用程序会话的生命周期中,但可能会在短暂的时期内产生重大负面影响,因此了解如何缓解这些问题非常重要。
\n以上内容与平台无关。就我个人而言,我最熟悉.Net 环境。在该特定领域,并具体讨论前面提到的 Web 服务挑战,需要了解的事情是确保您使用的是 GC 的服务器模式,并且您已使用最新版本的框架(在最近的版本中,有许多正在进行的性能工作在该领域取得了一些成果),您尽可能避免使用大型对象堆,您首先尽一切努力减少分配,并且您有适当的监控。
\n| 归档时间: |
|
| 查看次数: |
3677 次 |
| 最近记录: |