我很难理解如何将.NET 4.0上的垃圾收集器模式从Workstation更改为Concurrent模式。我发现我需要将这些行添加到一些配置文件中:
<configuration>
<runtime>
<gcConcurrent enabled="true"/>
</runtime>
</configuration>
但是,我不确定他们在这里的配置文件是什么。不过,我去了C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config下的 machine.config ,希望这是一个机器范围的设置,但仍然无济于事。我注意到我的dll也有自己的配置文件,但更新它们也无济于事。 请注意,我的应用程序没有app.config。
后来我在nunit中运行了一个测试dll,我还希望将GC模式设置为Concurrent。所以我想我应该在C:\ Program Files(x86)\ NUnit 2.6.2 \ bin下配置nunit: nunit-x86.exe.config 。这也没有任何效果。
任何线索?我应该更新哪个配置文件?
谢谢, 问候, 索林
答案 0 :(得分:3)
这有几个可能的原因。在我的头顶:
<gcServer>
元素配置当您可以查看使用哪个.config文件时,没有多大意义。从提升的Visual Studio命令提示符运行Fuslogvw.exe(右键单击该快捷方式,然后选择以管理员身份运行)。单击设置,然后勾选“记录所有绑定到磁盘”。运行你的程序。单击“刷新”并查看其中一个日志条目,您将看到类似于:
的行日志:使用应用程序配置文件:c:\ projects2 \ ConsoleApplication43 \ bin \ Debug \ ConsoleApplication43.vshost.exe.Config
只是一个例子,这个是为虚拟控制台模式应用程序生成的,以F5启动,并在项目的Debug选项卡中勾选了Hosting Process选项。
答案 1 :(得分:2)
AFAIK默认启用并发模式。
默认情况下,运行时使用并发垃圾收集,该收集针对延迟进行了优化。如果将元素的enabled属性设置为false,则运行时将使用非并发垃圾回收,该回收针对吞吐量进行了优化。以下显示了如何禁用并发垃圾回收。
请检查http://msdn.microsoft.com/en-us/library/at1stbec(v=vs.110).aspx