Vin*_*cio 4 .net garbage-collection
据我所知,垃圾收集器在应用程序运行时自行调整,例如,当收集管理堆上的对象时(根据MSDN)随时间调整的阈值.
如果应用程序崩溃,运行时是否记住它以前的垃圾收集"设置"或任何其他设置?
是的,垃圾收集器算法中有一个启发式,它可以自动调整分配策略.最明显的副作用是看到gen 0堆大小随着程序运行和消耗内存而增长.通常从2 MB开始,如果程序快速消耗内存,它可以达到~8 MB.Perfmon.exe中可见的性能计数器对此有好处.
重点在于"自动",这段代码是用平坦的假设编写的,即程序员没有足够的信息可以正确地引导算法.唯一的"钩子"是GC无法知道的东西,比如非托管内存使用情况(GC.AddMemoryPressure)或程序角色(app.exe.config).
启发式的详细信息未记录在案.但是,您可以从今天的出版社收集一些背景信息,用于软件算法文档,美国专利局.微软的大部分GC算法专利都归功于Patrick Dussud,你可以通过谷歌查询他的名字轻松找到它们.这是一个相关的.
不,运行时不记得它在运行期间学到的以前的垃圾收集"设置".
您可以通过将以下内容放在配置文件中来配置并发垃圾回收:
<configuration>
<runtime>
<gcServer enabled="true"/>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
要么:
<configuration>
<runtime>
<gcConcurrent enabled="false"/>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
可以在MSDN中找到gcServer的完整文档.
可以在MSDN中找到gcConcurrent的完整文档.
| 归档时间: |
|
| 查看次数: |
7408 次 |
| 最近记录: |