.NET 4.0 加入垃圾回收滞后时间模式 SustainedLowLatency

  • Jonathan Allen
  • 曹如进

2012 年 3 月 20 日

话题:语言 & 开发

当大家把目光聚焦在即将到来的.NET 4.5 的同时,微软继续对.NET 4.0 进行了一番小的增强。新版本.NET 4.0.3包含了垃圾回收、Windows Workflow 以及其他方面的改动。由于新版本默认不处于启用状态,因此如果想要使用其中的新特性,开发人员需要为项目中的目标 Framework 选项明确指定“.NET Framework 4.0.3”或“.NET Framework 4.0.3 Client Profile”。

垃圾回收

.NET 允许开发人员改变垃圾回收器的滞后时间模式。对于高吞吐的应用程序,滞后时间模式通常会设置为 Batch 模式,以容忍完整垃圾回收周期中产生的短暂中断。网站是使用这种模式的一个例子,其中 GC 导致的中断没有正常网络延迟明显。而对于具有用户界面的应用程序,一般会设置为 Interactive 模式。这种模式相比 Batch 模式要慢一些,但它在运行过程中不会降低用户界面的响应能力。

还有一些应用程序需要高吞吐和低延迟的组合。在.NET 2.0 SP 1 中,这些应用程序可以在短暂的时间周期内切换到 LowLatency 模式。虽然该模式几乎消除了 GC 中断,但是除非不断手工去触发一个完整的 GC 周期,否则它只能在短暂的时间里不用担心内存不足的异常。

新的 SustainedLowLatency 模式在 LowLatency 和 Interactive 模式之间进行了折衷。它在高度调优避免 GC 中断的同时,可以阻止完整垃圾回收的发生。这样的做法绝对是用必要的。新的模式行为使得应用程序可以长时间安全停留在当前模式,但尽管如此,仍需告诫开发人员避免在低滞后时间模式中进行不必要的内存分配。

Windows Workflow Foundation

Windows Workflow Foundation 的核心引擎现在可以运行在部分信任的环境中。除 SqlWorkflowInstanceStore 和 Visual Basic 表达式外,大部分特性都受支持。而前者只能在完全信任的环境中才能继续使用。

可移植类库

可移植类库现在包含了 System.Xml.Linq 和 System.ComponentModel.DataAnnotations。

SQL Server - 关联连接 ID(Correlated Connection ID)

微软 SQL Server 2012 添加了客户端和服务器间的关联连接 ID 功能。借助这次更新,SqlClient 将发送连接 ID 信息在服务端进行注册。此外,SqlClient 中还添加了以下功能以取回客户端可用的连接 ID:

  • SqlConnection 提供 ConnectionId 属性
  • SqlException 提供 ConnectionId 属性
  • SqlException.ToString 结果将包含连接 ID

查看英文原文:http://www.infoq.com/news/2012/03/Net-403

语言 & 开发