58

20131026 garbage collection in .net framework

  • Upload
    -

  • View
    139

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 20131026 garbage collection in .net framework
Page 2: 20131026 garbage collection in .net framework

http://tech.tanaka733.net

http://www.buildinsider.net/web/iis8

http://metrostyledev.net/

Page 3: 20131026 garbage collection in .net framework
Page 4: 20131026 garbage collection in .net framework

Building a Faster Ruby Garbage Collector

Twitterが、Ruby on RailsからJavaVMへ移行する理由

Ruby 2.1がガベージコレクションを変更,大規模システムでの批判に対処

Page 5: 20131026 garbage collection in .net framework
Page 6: 20131026 garbage collection in .net framework

Garbage

Collection

Page 7: 20131026 garbage collection in .net framework
Page 8: 20131026 garbage collection in .net framework

ネイティブヒープ (OS)

仮想アドレス空間(GCセグメント)

.NET CLRが管理

32bitプロセス:1.5GB 近く、64bit: 8TB近くまで

Page 9: 20131026 garbage collection in .net framework

マネージヒープ

Page 10: 20131026 garbage collection in .net framework
Page 12: 20131026 garbage collection in .net framework

マーキング 再配置 コンパクション

Page 13: 20131026 garbage collection in .net framework
Page 14: 20131026 garbage collection in .net framework
Page 15: 20131026 garbage collection in .net framework

空き 空き

Page 16: 20131026 garbage collection in .net framework

空き 空き

Page 17: 20131026 garbage collection in .net framework

空き

Page 18: 20131026 garbage collection in .net framework
Page 20: 20131026 garbage collection in .net framework

オブジェクトが新しいほど、生存期間は短い

オブジェクトが古いほど、生存期間は長い

ヒープの一部分の回収は、全体の回収より高速

Page 21: 20131026 garbage collection in .net framework

gen 0 gen 1 gen 2

Page 22: 20131026 garbage collection in .net framework

gen 0 gen 1 gen 2

Page 23: 20131026 garbage collection in .net framework

gen 0 gen 1 gen 2

Page 24: 20131026 garbage collection in .net framework
Page 25: 20131026 garbage collection in .net framework
Page 26: 20131026 garbage collection in .net framework
Page 27: 20131026 garbage collection in .net framework
Page 28: 20131026 garbage collection in .net framework
Page 29: 20131026 garbage collection in .net framework
Page 30: 20131026 garbage collection in .net framework
Page 31: 20131026 garbage collection in .net framework
Page 32: 20131026 garbage collection in .net framework
Page 33: 20131026 garbage collection in .net framework
Page 34: 20131026 garbage collection in .net framework
Page 35: 20131026 garbage collection in .net framework
Page 36: 20131026 garbage collection in .net framework
Page 37: 20131026 garbage collection in .net framework

class MyClass{

~MyClass(){

//Finalizeメソッド}

}

Page 39: 20131026 garbage collection in .net framework

System.IDisposable

static void Main(string[] args){

FileStream fs = null;try{

fs = new FileStream("Temp.txt", FileMode.Create);fs.Write(new byte[]{1, 2, 3, 4}, 0 , 4);

}finally{

if (fs != null) { fs.Dispose(); }}

}

static void Main(string[] args){

using (var fs = new FileStream("Temp.txt", FileMode.Create))

{fs.Write(new byte[] { 1, 2, 3, 4 }, 0, 4);

}}

Page 40: 20131026 garbage collection in .net framework
Page 41: 20131026 garbage collection in .net framework
Page 42: 20131026 garbage collection in .net framework
Page 43: 20131026 garbage collection in .net framework

http://msdn.microsoft.com/ja-jp/library/fs2xkftw(v=vs.110).aspx

public void Dispose(){

Dispose(true);GC.SuppressFinalize(this);

}

Page 44: 20131026 garbage collection in .net framework
Page 45: 20131026 garbage collection in .net framework
Page 46: 20131026 garbage collection in .net framework
Page 47: 20131026 garbage collection in .net framework
Page 48: 20131026 garbage collection in .net framework
Page 49: 20131026 garbage collection in .net framework
Page 50: 20131026 garbage collection in .net framework
Page 51: 20131026 garbage collection in .net framework
Page 52: 20131026 garbage collection in .net framework

http://msdn.microsoft.com/ja-jp/library/vstudio/ee851764(v=vs.110).aspx

Page 53: 20131026 garbage collection in .net framework
Page 54: 20131026 garbage collection in .net framework
Page 56: 20131026 garbage collection in .net framework

using

Page 57: 20131026 garbage collection in .net framework
Page 58: 20131026 garbage collection in .net framework