当多个应用程序在单个操作系统上运行时,ASP.Net 中创建多少个垃圾回收器实例?



Asp.Net 操作系统是否有单个GC,或者每个CLR/进程只有一个正在运行?

如果它对于操作系统来说不是单一的,那么各个 GC 如何决定是从操作系统请求更多内存还是抛出内存不足异常(他们不需要了解操作系统内存的整体状态(?

1.每个 CLR/Process GC 不在操作系统 lvl 中。

基本上垃圾收集器 in.Net 有两种模式工作站服务器

工作站模式假设其他应用程序正在机器上运行并且不占用CPU(这意味着其他进程可以使用CPU进行自己的GC集合(,允许其他应用程序/进程使用CPU进行自己的GC进程

服务器模式假定服务器上没有其他应用程序运行,并且假定计算机上的所有 CPU 都可用于帮助完成 GC。此 GC 模式导致每个 CPU 将托管堆拆分为几个部分。正如您可以猜到的那样,每个 CPU 负责托管堆的每个部分。

默认情况下,.Net(包括 ASP.NET(中的所有应用程序都在工作站mod上运行,但我们可以通过配置文件服务器mod启用。喜欢这个

<configuration>
<runtime>
<gcServer enabled = "true"/>
</runtime>
</configuration>
  1. 当 GC 将遍历所有从开始的生成对象并发现没有足够的模因时,将抛出 OutOfMemory 异常。并开始通过第一代和第二代进行收藏。如果在这种情况下,它确定再次没有 enoguh 内存将被抛出 OutOfMemoryException。

相关内容

最新更新