net framework における マネージヒープと ガベージコレクション

59
.NET Framework にににに にににににににに にににににににににに

Upload: nuala

Post on 08-Jan-2016

90 views

Category:

Documents


0 download

DESCRIPTION

.NET Framework における マネージヒープと ガベージコレクション. プログラミング .NET Framework 第 4 版  . 21 章のお話. 実際のオブジェクト. オブジェクトヘッダ 型オブジェクトポインター ( 4byte , 8byte) 型の構造体へのポンタ 同期ブロックインデックス (4byte , 8byte ) ロックとか COM で利用する フィールド. リソースを割り当てる. マネージ ヒープ. NextObjPtr. リソースを割り当てる. マネージ ヒープ. オブジェクト A を割り当てたい!. - PowerPoint PPT Presentation

TRANSCRIPT

.NET Framework.NET Framework 421

(4byte, 8byte)(4byte, 8byte)COMNextObjPtrNextObjPtrANextObjPtrANextObjPtrjANextObjPtrABNextObjPtrABC

NextObjPtrABCDEFGHGCNextObjPtrABCDEFGHNextObjPtrABCDEFGH00000000NextObjPtrABCDEFGH10110100NextObjPtrABCDEFGHDG10110110NextObjPtrABCDEFGH

10110110NextObjPtrABCDEFGH

10110110ADFGCCADFGC

OutOfMemoryExceptionOS

static void Main(string[] args) { Timer t = new Timer(TimerCallback, null, 0, 2000);

// A Console.ReadLine();

// t Console.WriteLine(t.ToString());

// B Console.ReadLine();

} static void Main(string[] args) { Timer t = new Timer(TimerCallback, null, 0, 2000);

// A Console.ReadLine();

// t Console.WriteLine(t.ToString());

// B Console.ReadLine();

}

DebugJIT

ReleaseDebugCLRGCGCABCDEABCDECEABDABDFGHABDBFHABDFHIJKLABDFHIL

ABDFHIL

MNOADLMOGCGCCLRSystem.GCWindows

CLR85,000

Large Object HeapLOH)Small Object Heap (SOH)GC

GCGC

LOHGCLarge Object HeapABCDLOHGCLarge Object HeapABCDB,CLOHGCLarge Object HeapAD

LOHGCLarge Object HeapADEELOHGCLarge Object HeapLOHOutOfMemoryExceptionLOH

.NET 4.5.1

Using System;Using System.Runtime;

// LOHGCSettings.LOHCompactionMode =GCLargeObjectHeapCompactionMode.CompactOnce;

// GCLOHGC.Collect():LOH.NET4.5.1finalizationGC

Finalizeclass Hoge{ // Finalize ~Hode() { // }}C++C++C#FinalizeABCDFBCEFEFFinalizeFinalizationABCDFBCEFEFCDFABCFBCEFEFFinalizeDFinalizeCFF

ABCFBCEFEF

ABCFBEFEFFinalizeFinalize FC,F

ABFBEE

finalizationFinalize

CLR http://dotnetlogbook.blogspot.jp/2009/09/clr.html http://msdn.microsoft.com/ja-jp/magazine/cc53499The Dangers of the Large Object Heaphttps://www.simple-talk.com/dotnet/.net-framework/the-dangers-of-the-large-object-heap/