【问题标题】:CLR Garbage Collector frequency and system memory availableCLR 垃圾收集器频率和系统内存可用
【发布时间】:2014-03-12 09:03:35
【问题描述】:

我有一个具有 300MB 可用物理内存和 6 个 .NET 进程的系统。当资源可用时,它们中的每一个都可以从空闲的 100MB 跃升至压力的 500MB。我知道必须增加系统规格,但我想知道 GC 是否会尝试更频繁地收集内存并尝试使进程内存分配尽可能小? GC 频率是否取决于可用的系统内存?

我使用的是 2.0 运行时。

【问题讨论】:

  • GC 只消耗 virtual 内存,无论机器安装了多少物理 RAM,它总是至少有 2 GB 可用。 非常不太可能是 300MB,这不是您可以从 RAM 芯片供应商处购买的数量。为进程提供 RAM 是操作系统的工作,.NET 与它没有任何关系。
  • 我没有说我安装了 300MB 内存但可用。 SQL、JVM 和其他服务安装了 8GB 空间,剩下 300MB 给我的进程。 IDLE 中的每个都大约 100MB,但在压力下,如果有足够的资源,它们会膨胀到 500MB。

标签: .net garbage-collection clr


【解决方案1】:

垃圾回收确实依赖于系统内存。它很懒惰。这意味着如果有足够的可用空间,它的收集频率就会降低。

您可以阅读详细信息here

对你来说最重要的一句话:

当下列条件之一为真时发生垃圾收集:

  • 系统物理内存不足。

如果您的整体内存较低,则显然会更频繁地出现可用物理内存较低的情况。

【讨论】:

    猜你喜欢
    • 2017-03-15
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 2012-04-08
    • 2012-03-13
    • 2017-08-06
    相关资源
    最近更新 更多