The Stack Is An Implementation Detail系列文由Eric Lippert所寫
- - - 第一篇的筆記 - - -
第一篇之前看完了但沒做筆記
也許等重看時再補上
- - - 第二篇的筆記 - - -
allocation 分配
deallocation 釋放
heap有holes
formal parameter或parameter像是下面舉例的Test函式中的的x:
void Test(int x)
{
...
}
呼叫函式時的x則稱作argument:
Test(x)
文章中寫了garbage collection (GC)的運作:
"When a garbage collection is performed there are three phases: mark, sweep and compact. In the “mark” phase, we assume that everything in the heap is “dead”. The CLR knows what objects were “guaranteed alive” when the collection started, so those guys are marked as alive. Everything they refer to is marked as alive, and so on, until the transitive closure of live objects are all marked. In the “sweep” phase, all the dead objects are turned into holes. In the “compact” phase, the block is reorganized so that it is one contiguous block of live memory, free of holes."
簡單來說就是GC有三個階段:mark、sweep、compact
CLR collector是世代相傳的
放在heap裡的object的生命週期有:長、中、短之分
從短週期的開始,如果存活下來就移動到中週期的,再來則到長週期的
GC時常在短週期的heap裡執行;長週期的則相反
他們這麼做的想法是不想花費時間檢查長週期的,此外得迅速回收短週期的
留言
張貼留言