从.NET代码中检查值gcTrimCommitOnLowMemory

时间:2014-01-31 18:49:12

标签: .net garbage-collection

我正在尝试确认我们已更改的各种运行时设置正在应用于我的应用程序。特别是gcTrimCommitOnLowMemory文件的运行时部分中的Aspnet.config。如何检查当前应用程序的值?

我显然可以阅读.config文件,但我想查看MY apps运行时的运行值。

我试图搜索这个无济于事。调用ConfigurationManager.GetSection("runtime")只会返回System.Configuration.IgnoreSection个实例。

1 个答案:

答案 0 :(得分:0)

我会手动阅读.config文件(事实上,这就是我在相关案例中所做的事情)。考虑一下,当您使用后台发生的System.Configuration API时。所以,即使不幸[1],当他们没有暴露runtime - 部分时,你仍然可以手动阅读并最终获得相同的效果。

结果的准确性也应该同样好。如果某人在应用程序启动后更改了这些设置的值,理论上ConfigurationManage也会看到这些值,即使它们已经过时了#34;因此,自我阅读方法在这里并不差。

FWIW,您可以使用以下xpath来读取您之后的值(再加上两个通常感兴趣的值):

/configuration/runtime/gcTrimCommitOnLowMemory/@enabled

/configuration/runtime/gcServer/@enabled
/configuration/runtime/gcConcurrent/@enabled

除了编写自己的(本机DLL)并在CLR的内存中进行戳入之外," trim commit"的实际运行时值。设置似乎没有暴露给应用程序。 您可以通过CoreCLR源代码search查看配置值的展开方式。

在ASP.NET应用程序中,您必须找到应用程序池实际使用的aspnet.config文件。我没有这方面的经验,但this文章提供了更多信息。

[1]我认为运行时部分没有映射到正确的配置部分,甚至被托管ConfigurationManager忽略,因为它是由CLR的本机启动代码读取的,因此&#34没有兴趣"托管代码。