SlideShare une entreprise Scribd logo
1  sur  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)

Contenu connexe

En vedette

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
 

En vedette (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
 

Plus de 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
 

Plus de 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
 

Dernier

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Dernier (8)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

GCについて