wenjin xu. basicsallocationcollectionfinalization gc mode sample

19
Garbage Collection in .Net Wenjin Xu

Upload: jovany-lunt

Post on 01-Apr-2015

234 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

Garbage Collection in .Net

Wenjin Xu

Page 2: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

AgendaBasicsAllocationCollectionFinalizationGC ModeSample

Page 3: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

BasicIdea

Automatic memory managementTerms

Domain, Heap, Generation 0, Generation 1, Generation 2, Large object heap

Page 4: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

Heap

Page 5: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

AllocationInitial

CLR reserve memory for small object heap and large object heap(16MB / 64MB)

newobjAllocate memory from heap

Page 6: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

Generation Promotion

Page 7: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

CollocationWhen

Generation 0 is fullCall GC.Collect()Low memory

HowAssume all objects are garbageMark following object are reachable:Static fieldsMethod parametersLocal variablesCPU registersStrong ReferencesCollect

Page 8: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

Finalization

WhenGeneration 0 is fullCall GC.CollectLow memoryAppDomain unloadCLR is shutting down

Page 9: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

Dispose

Page 10: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

GC Mode

10

GC Mode

GC

Workstation Server

ConcurrentCollections

“Normal”Background GC

Page 11: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

GC Mode - DefaultSingle processor should use default Mode

Page 12: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

GC Mode – Concurrent GCIn background garbage collection, ephemeral generations (0 and 1) are collected as needed while the collection of generation 2 is in progress

Page 13: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

GC Mode – Server ModeHigh priority threadGC together, so garbage collection is fasterServer garbage collection often has larger size segments

Page 14: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

Pinned ObjectWhy do we need pinning

Interop with unmanaged codeHow objects get pinned

GCHandleType.PinnedAllowed by language syntax, eg. fixed in c#Args get pinned by the interop frame

Fragmentation problem

Page 15: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

Domain MonitoringCan not disable after enableGlobalPerformance hunt (about <1%)Does not count memory from Marshal.AllocHGlobal

Page 16: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

Memory LeakStrong ReferenceAllocate Memory by Marshal

Page 17: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

Sample查看性能计数器使用对象池节省新建对象造成的 GC压力使用 VSTS检查内存分配情况WinDBG + sosDebug vs Release

Page 18: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

ResourcePerformance Counter

http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx

BookCLR via C# 3rd Edition

Source Codehttp://referencesource.microsoft.com/netframework.aspx

Page 19: Wenjin Xu. BasicsAllocationCollectionFinalization GC Mode Sample

Thank you