SlideShare a Scribd company logo
1 of 27
GCについて cactusman
自己紹介 HN:cactusman(さぼてん)  年齢:0x1d  出身:関西  所属:java-ja,Wicket-ja 肩書き:Hudsonコミッタ
GCについてですが
読め!
注意事項 対象は初心者 マニアックなことは話しません。
アジェンダ GCについて 基本アルゴリズム HotSpotVMのGC
GCとは プログラム上で不要となったメモリをまとめる動作 メモリ領域上の不要なゴミを見つける ゴミを回収し、プログラマが再度利用できるようにする
一言で言うと
ルート ゴミ
GCを学ぶ意義 メモリ領域の効率的な使い方を意識 枯れない技術 1960~ 技術的に面白い(らしい)
JavaにおけるGC 「Java仮想マシン」(JVM)では実装依存 「Java仮想マシン仕様書 第2版」     第3章 Java仮想マシンの構造     冒頭に記述 今回のJVMのGCはHotSpotに ついて
GCの基本アルゴリズム マーク&スイープ 参照カウント コピー GCアルゴリズムはこの基本アルゴリズムの派生
マーク&スイープ ルート要素からたどれるオブジェクトをマークしていく マークのないオブジェクト(ゴミ)を回収する
マーク&スイープ メリット 実装が簡単 デメリット フラグメンテーション アローケーション速度 停止時間が長い
参照カウント 自身のオブジェクトが参照されている数のカウンタをもっている 参照される度に+1、参照が切れる度に-1される カウンタが0になった時点で解放される
参照カウント メリット 参照が切れたタイミングで解放処理が行える 最大停止時間が短い ポインタをたどる必要がない デメリット 循環参照を回収できない カウンタの値の増減処理が重い カウンタに多くのビットが必要 実装が煩雑
コピー コピー元のヒープをfrom-space、コピー先のヒープをto-spaceの二つの領域がある ルートからオブジェクトをたどりながら、オブジェクトをfromからtoへコピーする コピーが終わると、from内のオブジェクトをすべて捨てる
コピー メリット スループットがいい メモリ回収と同時にコンパクションを行える フラグメンテーションが起きない FreeList(ヒープの空き部屋リスト)を使わないため、allocate処理が早い デメリット ヒープ領域が余分に取る
HotSpotVMにおける世代別GC 世代別GCとは 「多くのオブジェクトは若くして死ぬ」という経験則 ヒープ領域を新世代、旧世代というように世代別にわける GCを実行するとオブジェクトは歳をとる ある閾値を超えるとオブジェクトは旧世代へと移動する 新世代領域を頻繁にGCする
Yang Eden Suvivor2 Tenured ヒープ領域 Suvivor1 Old
GCの種類 Scavenge GC コピーGC Full GC マーク&スイープGC
Scavenge GC
Scavenge GC
Scavenge GC
その他 Young領域に対するパラレルGC Old領域に対するパラレルGC Mostly Concurrent Mark & Sweep GC(M-CMS) ほとんどの過程を並列化 G1GC(Garbage-First GC)

More Related Content

Viewers also liked

JVM のいろはにほ #javajo
JVM のいろはにほ #javajoJVM のいろはにほ #javajo
JVM のいろはにほ #javajoYuji Kubota
 
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...Monica Beckwith
 
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccConcurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccYuji Kubota
 
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javajava.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javaYuji Kubota
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Yuji Kubota
 
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjugYuji Kubota
 

Viewers also liked (7)

GCが止まらない
GCが止まらないGCが止まらない
GCが止まらない
 
JVM のいろはにほ #javajo
JVM のいろはにほ #javajoJVM のいろはにほ #javajo
JVM のいろはにほ #javajo
 
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
 
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccConcurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
 
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javajava.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
 
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
 

More from cactusman

Jenkins勉強会 in 札幌 第二部
Jenkins勉強会 in 札幌 第二部Jenkins勉強会 in 札幌 第二部
Jenkins勉強会 in 札幌 第二部cactusman
 
Jenkins勉強会 in 札幌 第一部
Jenkins勉強会 in 札幌 第一部Jenkins勉強会 in 札幌 第一部
Jenkins勉強会 in 札幌 第一部cactusman
 
Hudson初心者向けデモ
Hudson初心者向けデモHudson初心者向けデモ
Hudson初心者向けデモcactusman
 
HudsonによるOss開発
HudsonによるOss開発HudsonによるOss開発
HudsonによるOss開発cactusman
 
頼れる執事があなたをサポート
頼れる執事があなたをサポート頼れる執事があなたをサポート
頼れる執事があなたをサポートcactusman
 
1000speakers#2-5 頼れる執事Hudson
1000speakers#2-5 頼れる執事Hudson1000speakers#2-5 頼れる執事Hudson
1000speakers#2-5 頼れる執事Hudsoncactusman
 
HudsonときどきMaven2
HudsonときどきMaven2HudsonときどきMaven2
HudsonときどきMaven2cactusman
 

More from cactusman (8)

Jenkins勉強会 in 札幌 第二部
Jenkins勉強会 in 札幌 第二部Jenkins勉強会 in 札幌 第二部
Jenkins勉強会 in 札幌 第二部
 
Jenkins勉強会 in 札幌 第一部
Jenkins勉強会 in 札幌 第一部Jenkins勉強会 in 札幌 第一部
Jenkins勉強会 in 札幌 第一部
 
Jenkins
JenkinsJenkins
Jenkins
 
Hudson初心者向けデモ
Hudson初心者向けデモHudson初心者向けデモ
Hudson初心者向けデモ
 
HudsonによるOss開発
HudsonによるOss開発HudsonによるOss開発
HudsonによるOss開発
 
頼れる執事があなたをサポート
頼れる執事があなたをサポート頼れる執事があなたをサポート
頼れる執事があなたをサポート
 
1000speakers#2-5 頼れる執事Hudson
1000speakers#2-5 頼れる執事Hudson1000speakers#2-5 頼れる執事Hudson
1000speakers#2-5 頼れる執事Hudson
 
HudsonときどきMaven2
HudsonときどきMaven2HudsonときどきMaven2
HudsonときどきMaven2
 

Recently uploaded

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Recently uploaded (9)

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

GCについて