20131026 garbage collection in .net framework
TRANSCRIPT
![Page 1: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/1.jpg)
![Page 2: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/2.jpg)
http://tech.tanaka733.net
http://www.buildinsider.net/web/iis8
http://metrostyledev.net/
![Page 3: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/3.jpg)
![Page 4: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/4.jpg)
Building a Faster Ruby Garbage Collector
Twitterが、Ruby on RailsからJavaVMへ移行する理由
Ruby 2.1がガベージコレクションを変更,大規模システムでの批判に対処
![Page 5: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/5.jpg)
![Page 6: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/6.jpg)
Garbage
Collection
![Page 7: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/7.jpg)
![Page 8: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/8.jpg)
ネイティブヒープ (OS)
仮想アドレス空間(GCセグメント)
.NET CLRが管理
32bitプロセス:1.5GB 近く、64bit: 8TB近くまで
![Page 9: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/9.jpg)
マネージヒープ
![Page 10: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/10.jpg)
![Page 11: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/11.jpg)
Rocksee on Flickr viaESP
![Page 12: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/12.jpg)
マーキング 再配置 コンパクション
![Page 13: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/13.jpg)
![Page 14: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/14.jpg)
![Page 15: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/15.jpg)
空き 空き
![Page 16: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/16.jpg)
空き 空き
![Page 17: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/17.jpg)
空き
![Page 18: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/18.jpg)
![Page 19: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/19.jpg)
Ctd 2005 on Flickr viaESP
![Page 20: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/20.jpg)
オブジェクトが新しいほど、生存期間は短い
オブジェクトが古いほど、生存期間は長い
ヒープの一部分の回収は、全体の回収より高速
![Page 21: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/21.jpg)
gen 0 gen 1 gen 2
![Page 22: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/22.jpg)
gen 0 gen 1 gen 2
![Page 23: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/23.jpg)
gen 0 gen 1 gen 2
![Page 24: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/24.jpg)
![Page 25: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/25.jpg)
![Page 26: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/26.jpg)
![Page 27: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/27.jpg)
![Page 28: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/28.jpg)
![Page 29: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/29.jpg)
![Page 30: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/30.jpg)
![Page 31: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/31.jpg)
![Page 32: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/32.jpg)
![Page 33: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/33.jpg)
![Page 34: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/34.jpg)
![Page 35: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/35.jpg)
![Page 36: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/36.jpg)
![Page 37: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/37.jpg)
class MyClass{
~MyClass(){
//Finalizeメソッド}
}
![Page 38: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/38.jpg)
James Cridland on Flickr viaESP
![Page 39: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/39.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/40.jpg)
![Page 41: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/41.jpg)
![Page 42: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/42.jpg)
![Page 43: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/43.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/44.jpg)
![Page 45: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/45.jpg)
![Page 46: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/46.jpg)
![Page 47: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/47.jpg)
![Page 48: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/48.jpg)
![Page 49: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/49.jpg)
![Page 50: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/50.jpg)
![Page 51: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/51.jpg)
![Page 52: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/52.jpg)
http://msdn.microsoft.com/ja-jp/library/vstudio/ee851764(v=vs.110).aspx
![Page 53: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/53.jpg)
![Page 54: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/54.jpg)
![Page 55: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/55.jpg)
プログラミング .NET Framework 第4版
http://msdn.microsoft.com/ja-jp/library/vstudio/hh156531(v=vs.110).aspx
C#プログラマのための.NETアプリケーション最適化技法
![Page 56: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/56.jpg)
using
![Page 57: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/57.jpg)
![Page 58: 20131026 garbage collection in .net framework](https://reader034.vdocuments.site/reader034/viewer/2022042615/55a6a7fa1a28abee2e8b48ed/html5/thumbnails/58.jpg)