CLR Garbage Collection

1. Memory architecture

2. Generations
  • Generation 0 : Short lived objects (Collected frequently)
  • Generation 1 : Medium lived objects (Collected less frequently)
  • Generation 2 : Long lived objects (Variable size and expensive to collect)
  • Generation 0 and 1 is known as the ephemeral segment (Fixed size)

SOS : !eeheap -gc

SOSEX : !gcgen <address> 

3. Roots
  • GC uses roots to find which objects are alive or dead
  • Any object with an existing reference to it has a root and is thus considered alive
  • Roots are determined using the following components:JIT compoler, Stack walker, Handle table, Finalize Queue

SOS : !gcroot <address>

4. Finalization
  • GC only knows about managed objects
  • Objects that wrap native types need a cleanup mechanism
  • Objects that wrap a native types must:
    • Implement a Finalizer
    • Implement IDisposable
    • Both methods should use same private helper method 
Finalization Best Practices
  • Whenever possible do not rely on finalization rather always explicitly Dispose finalizable objects
  • If you implement a finalizer you should also implement IDisposable (Dispose suppresses the object finalization)
  • In C#, the using {} pattern automatically invokes the Dispose method
5. Large object heap
  • Objects greater than 85,000 bytes
  • Key difference is that LOH is not compacted (Very common cause of memory fragmentation)
  • Introduced to avoid the cost of compaction
6. Pinning problems
  • As part of compaction the GC may move an object around
  • Problem for objects passed to native code (For example, a buffer to async native operation)
  • Pinning tells the GC that it is not allowed to move the object
  • Excessive pinning common cause of memory fragmentation

转载于:https://www.cnblogs.com/Dennymei/archive/2013/02/05/2892696.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值