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

fmms 13年前
     <p> 作者 <a href="/misc/goto?guid=4958331654026389041">Jonathan Allen</a> 译者 <a href="/misc/goto?guid=4958331654885407681">曹如进</a></p>    <p> 当大家把目光聚焦在即将到来的 .NET 4.5 的同时,微软继续对 .NET 4.0 进行了一番小的增强。新版本<a href="/misc/goto?guid=4958333839012244546">.NET 4.0.3</a>包含了垃圾回收、Windows Workflow 以及其他方面的改动。由于新版本默认不处于启用状态,因此如果想要使用其中的新特性,开发人员需要为项目中的目标 Framework 选项明确指定“.NET Framework 4.0.3”或“.NET Framework 4.0.3 Client Profile”。</p>    <p> <strong>垃圾回收</strong></p>    <p> .NET 允许开发人员改变垃圾回收器的滞后时间模式。对于高吞吐的应用程序,滞后时间模式通常会设置为 Batch 模式,以容忍完整垃圾回收周期中产生的短暂中断。网站是使用这种模式的一个例子,其中 GC 导致的中断没有正常网络延迟明显。而对于具有用户界面的应用程序,一般会设置为 Interactive 模式。这种模式相比 Batch 模式要慢一些,但它在运行过程中不会降低用户界面的响应能力。</p>    <p align="left">还有一些应用程序需要高吞吐和低延迟的组合。在 .NET 2.0 SP 1 中,这些应用程序可以在短暂的时间周期内切换到 LowLatency 模式。虽然该模式几乎消除了 GC 中断,但是除非不断手工去触发一个完整的 GC 周期,否则它只能在短暂的时间里不用担心内存不足的异常。</p>    <p> 新的 SustainedLowLatency 模式在 LowLatency 和 Interactive 模式之间进行了折衷。它在高度调优避免 GC 中断的同时,可以阻止完整垃圾回收的发生。这样的做法绝对是用必要的。新的模式行为使得应用程序可以长时间安全停留在当前模式,但尽管如此,仍需告诫开发人员避免在低滞后时间模式中进行不必要的内存分配。</p>    <p> <strong>Windows Workflow Foundation</strong></p>    <p> Windows Workflow Foundation 的核心引擎现在可以运行在部分信任的环境中。除 SqlWorkflowInstanceStore 和 Visual Basic 表达式外,大部分特性都受支持。而前者只能在完全信任的环境中才能继续使用。</p>    <p> <strong>可移植类库</strong></p>    <p> 可移植类库现在包含了 System.Xml.Linq 和 System.ComponentModel.DataAnnotations。</p>    <p> <strong>SQL Server -关联连接 ID(Correlated Connection ID)</strong></p>    <blockquote>     <p>微软 SQL Server 2012 添加了客户端和服务器间的关联连接 ID 功能。借助这次更新,SqlClient 将发送连接 ID 信息在服务端进行注册。此外,SqlClient 中还添加了以下功能以取回客户端可用的连接 ID:</p>    </blockquote>    <ul>     <li>SqlConnection 提供 ConnectionId 属性</li>     <li>SqlException 提供 ConnectionId 属性</li>     <li>SqlException.ToString 结果将包含连接 ID</li>    </ul>    <p> <strong>查看英文原文:</strong><a href="/misc/goto?guid=4958333839821905718">http://www.infoq.com/news/2012/03/Net-403</a></p>    <div id="come_from">     来自:     <a id="link_source2" href="/misc/goto?guid=4958333840608767265" target="_blank">InfoQ</a>    </div>