SlideShare a Scribd company logo
1 of 21
Download to read offline
ガベージコレクションの
    アルゴリズムと実装

         By うえだ
ガベージコレクションの
    アルゴリズムと実装

         By うえだ

 話が壮大過ぎてムリ
新題!!
「ガベージコレクションのアルゴリズムと実装」
を読んでJSで偽GCつくってみたので
を読んでJSで偽GCつくってみたので
    JSで偽GC
喋らしてください。


Rubyとの関連→
自己紹介
・うえだ @to_ueda
・minami.rbではお酒の会係
          ではお酒の会係
・ウィスキーの国から引越しした


     ・ ・     を少し書けるよ
・Ruby・JS・Javaを少し書けるよ
内容
 ・ガベージコレクション(GC)とは?
 ・ガベージコレクション( )とは?
 ・なんでJSなの?
 ・なんで なの?
 ・GCアルゴリズムについて
    アルゴリズムについて
 ・デモ


 難しいことはしゃべれません
GCとは?
GCとは?
プログラムに代わりメモリの管理する仕組み
 ・必要なメモリの確保
 ・いらないメモリのお掃除


Ruby、Java、
Ruby、Java、JavaScript
PHP、Pyhon、
PHP、Pyhon、Lisp
とかに使われてるよ


                 ※勝手なイメージ像です
内容
✔・ガベージコレクション( )とは?
 ・ガベージコレクション(GC)とは?
 ・なんでJSなの?
 ・なんで なの?
 ・GCアルゴリズムについて
    アルゴリズムについて
 ・デモ
なぜGC JSで
なぜGCをJSで?
  GCを
 ・せっかく本を読んだので作ってみよう
   言語とかわかんないし
 ・C言語とかわかんないし
      も考えたけどGUIとか面倒
 ・Rubyも考えたけど
      も考えたけど   とか面倒
     に出力するなら最初からJSで・・・
 ・WEBに出力するなら最初から で・・・
     に出力するなら最初から

GCの上にGC載せる奴おらんやろ
GCの上にGC載せる奴おらんやろ
  の上にGC載せる奴おらん
    ・・・ネタ的においしい
さんのblog
               さんの
           Nariさんの
               年頃の記事
           2008年頃の記事




・・・と
これを見るまでは思ってました。
ネタだだ被りですやん
ネタだだ被りですやん
  だだ被りです
内容
✔・ガベージコレクション( )とは?
 ・ガベージコレクション(GC)とは?

✔・なんで なの?
 ・なんでJSなの?
 ・ GCアルゴリズムについて
     アルゴリズムについて
 ・デモ
実装したGCについて
実装したGCについて
    GC
 ・マーク&スイープGC
 ・マーク&スイープ

      にも使われてるらしい
 ・Rubyにも使われてるらしい

 ・考え方は簡単
       フェイズ
   markフェイズ
        (掃除)フェイズ
   sweep(掃除)フェイズ
もうちょっと詳しく
markフェイズ
markフェイズ
                           root

メモリ

obj   obj    obj   obj   obj      obj   obj   obj   obj   obj
 1     2      3     4     5        6     7     8     9    10




            rootさんあなたが必要なのは誰ですか?
                                                          root
                     3 と 6 は必要。
markフェイズ
markフェイズ
                          root



obj   obj   obj   obj   obj      obj   obj   obj   obj   obj
 1     2     3     4     5        6     7     8     9    10




            3と6さん必要なのはありますか?                              obj
                                                           3

                        私は特になし
                                                           obj
                                                            6
                   僕は4と8 が必要
sweepフェイズ
sweepフェイズ
                          root



obj   obj   obj   obj   obj      obj   obj   obj   obj   obj
 1     2     3     4     5        6     7     8     9    10




            全員に聞いたから残りはいらないわね
sweepフェイズ
sweepフェイズ
                        root



     obj   obj    obj          obj       obj
 1                      5            7         9   10
      2     3      4            6         8




                 空きは1,5,7,9,10 ね
内容
✔・ガベージコレクション( )とは?
 ・ガベージコレクション(GC)とは?

✔・JSでGCを実装してみたよ
    で を実装してみたよ

✔・GCアルゴリズムについて
     アルゴリズムについて
 ・デモ
デモします。
http://deep-journey-7210.heroku.com/
まとめ・・・
まとめ・・・
・GC本を読んだ
   本を読んだ

・Nariさんは偉大でした
     さんは偉大でした

・実際作るとたくさん問題が起きて
 理解度が増しました。

・なんとかデモに間に合いました。
ありがとうございました。


Heroku : http://deep-journey-7210.heroku.com/
 Github : https://github.com/ueda82/GC_on_Javascript

More Related Content

What's hot

Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話Masaya Konishi
 
Devsumi2012フィードバック オープニング
Devsumi2012フィードバック オープニングDevsumi2012フィードバック オープニング
Devsumi2012フィードバック オープニングRakuten Group, Inc.
 
zshはいいぞ。 【限界LT #0】
zshはいいぞ。 【限界LT #0】zshはいいぞ。 【限界LT #0】
zshはいいぞ。 【限界LT #0】liquid oxygen
 
私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08)
私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08) 私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08)
私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08) parrotstudio
 
Rubinius Under a Microscope
Rubinius Under a MicroscopeRubinius Under a Microscope
Rubinius Under a Microscope高広 内山
 
Rubyの実装をRubiniusで便利
Rubyの実装をRubiniusで便利Rubyの実装をRubiniusで便利
Rubyの実装をRubiniusで便利Yutaka Tachibana
 
Wakayama.rbボードの使い方
Wakayama.rbボードの使い方Wakayama.rbボードの使い方
Wakayama.rbボードの使い方三七男 山本
 
Gitを使ったRoute53の管理
Gitを使ったRoute53の管理Gitを使ったRoute53の管理
Gitを使ったRoute53の管理Sugawara Genki
 
RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)三七男 山本
 
コミュニティのある風景
コミュニティのある風景コミュニティのある風景
コミュニティのある風景Ryunosuke SATO
 
GopherJS + Nashorn
GopherJS + NashornGopherJS + Nashorn
GopherJS + NashornTakuya Ueda
 
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Mrubyについて   第16回 岡山ruby, ruby on rails勉強会Mrubyについて   第16回 岡山ruby, ruby on rails勉強会
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会Masaya Konishi
 
非ガチ勢「よし、Coffee script使おう!」
非ガチ勢「よし、Coffee script使おう!」非ガチ勢「よし、Coffee script使おう!」
非ガチ勢「よし、Coffee script使おう!」Muyuu Fujita
 
出会い駆動コミュニティー
出会い駆動コミュニティー出会い駆動コミュニティー
出会い駆動コミュニティーyoku0825
 
Rancher Meetup Tokyo #7 Rancher Home
Rancher Meetup Tokyo #7 Rancher HomeRancher Meetup Tokyo #7 Rancher Home
Rancher Meetup Tokyo #7 Rancher HomeTetsurou Yano
 
私はいかにしてpull request を行ったか - あるいは social development について
私はいかにしてpull request を行ったか - あるいは social development について私はいかにしてpull request を行ったか - あるいは social development について
私はいかにしてpull request を行ったか - あるいは social development についてよしだ あつし
 

What's hot (20)

Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話
 
Devsumi2012フィードバック オープニング
Devsumi2012フィードバック オープニングDevsumi2012フィードバック オープニング
Devsumi2012フィードバック オープニング
 
zshはいいぞ。 【限界LT #0】
zshはいいぞ。 【限界LT #0】zshはいいぞ。 【限界LT #0】
zshはいいぞ。 【限界LT #0】
 
私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08)
私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08) 私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08)
私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08)
 
Rubinius Under a Microscope
Rubinius Under a MicroscopeRubinius Under a Microscope
Rubinius Under a Microscope
 
Rubyの実装をRubiniusで便利
Rubyの実装をRubiniusで便利Rubyの実装をRubiniusで便利
Rubyの実装をRubiniusで便利
 
Wakayama.rbボードの使い方
Wakayama.rbボードの使い方Wakayama.rbボードの使い方
Wakayama.rbボードの使い方
 
Gitを使ったRoute53の管理
Gitを使ったRoute53の管理Gitを使ったRoute53の管理
Gitを使ったRoute53の管理
 
RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)
 
コミュニティのある風景
コミュニティのある風景コミュニティのある風景
コミュニティのある風景
 
GopherJS + Nashorn
GopherJS + NashornGopherJS + Nashorn
GopherJS + Nashorn
 
Scala.js
Scala.jsScala.js
Scala.js
 
Memcache Queue
Memcache QueueMemcache Queue
Memcache Queue
 
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Mrubyについて   第16回 岡山ruby, ruby on rails勉強会Mrubyについて   第16回 岡山ruby, ruby on rails勉強会
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
 
非ガチ勢「よし、Coffee script使おう!」
非ガチ勢「よし、Coffee script使おう!」非ガチ勢「よし、Coffee script使おう!」
非ガチ勢「よし、Coffee script使おう!」
 
出会い駆動コミュニティー
出会い駆動コミュニティー出会い駆動コミュニティー
出会い駆動コミュニティー
 
Rancher Meetup Tokyo #7 Rancher Home
Rancher Meetup Tokyo #7 Rancher HomeRancher Meetup Tokyo #7 Rancher Home
Rancher Meetup Tokyo #7 Rancher Home
 
私はいかにしてpull request を行ったか - あるいは social development について
私はいかにしてpull request を行ったか - あるいは social development について私はいかにしてpull request を行ったか - あるいは social development について
私はいかにしてpull request を行ったか - あるいは social development について
 
社内Lt
社内Lt社内Lt
社内Lt
 
計算数学
計算数学計算数学
計算数学
 

Viewers also liked

山椒の味は大人の味
山椒の味は大人の味山椒の味は大人の味
山椒の味は大人の味Kouji Matsui
 
Hello! intermediate language
Hello! intermediate languageHello! intermediate language
Hello! intermediate languageKouji Matsui
 
抽象太郎ものがたり そして伝説へ
抽象太郎ものがたり そして伝説へ抽象太郎ものがたり そして伝説へ
抽象太郎ものがたり そして伝説へKouji Matsui
 
式の体を成して無い式を式の体を成すように式と式木で何とかする式
式の体を成して無い式を式の体を成すように式と式木で何とかする式式の体を成して無い式を式の体を成すように式と式木で何とかする式
式の体を成して無い式を式の体を成すように式と式木で何とかする式Kouji Matsui
 
真Intermediate languageのキホン
真Intermediate languageのキホン真Intermediate languageのキホン
真Intermediate languageのキホンKouji Matsui
 
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらばメタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらばKouji Matsui
 
Final LINQ Extensions II
Final LINQ Extensions IIFinal LINQ Extensions II
Final LINQ Extensions IIKouji Matsui
 
Final LINQ extensions III
Final LINQ extensions IIIFinal LINQ extensions III
Final LINQ extensions IIIKouji Matsui
 
Final LINQ Extensions
Final LINQ ExtensionsFinal LINQ Extensions
Final LINQ ExtensionsKouji Matsui
 
async/awaitダークサイド is 何
async/awaitダークサイド is 何async/awaitダークサイド is 何
async/awaitダークサイド is 何Kouji Matsui
 
これからの「async/await」の話をしよう
これからの「async/await」の話をしようこれからの「async/await」の話をしよう
これからの「async/await」の話をしようKouji Matsui
 
continuatioN Linking
continuatioN LinkingcontinuatioN Linking
continuatioN LinkingKouji Matsui
 
Async deepdive before de:code
Async deepdive before de:codeAsync deepdive before de:code
Async deepdive before de:codeKouji Matsui
 
Beachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JITBeachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JITKouji Matsui
 

Viewers also liked (15)

山椒の味は大人の味
山椒の味は大人の味山椒の味は大人の味
山椒の味は大人の味
 
Hello! intermediate language
Hello! intermediate languageHello! intermediate language
Hello! intermediate language
 
抽象太郎ものがたり そして伝説へ
抽象太郎ものがたり そして伝説へ抽象太郎ものがたり そして伝説へ
抽象太郎ものがたり そして伝説へ
 
式の体を成して無い式を式の体を成すように式と式木で何とかする式
式の体を成して無い式を式の体を成すように式と式木で何とかする式式の体を成して無い式を式の体を成すように式と式木で何とかする式
式の体を成して無い式を式の体を成すように式と式木で何とかする式
 
真Intermediate languageのキホン
真Intermediate languageのキホン真Intermediate languageのキホン
真Intermediate languageのキホン
 
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらばメタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
 
Final LINQ Extensions II
Final LINQ Extensions IIFinal LINQ Extensions II
Final LINQ Extensions II
 
Final LINQ extensions III
Final LINQ extensions IIIFinal LINQ extensions III
Final LINQ extensions III
 
Final LINQ Extensions
Final LINQ ExtensionsFinal LINQ Extensions
Final LINQ Extensions
 
async/awaitダークサイド is 何
async/awaitダークサイド is 何async/awaitダークサイド is 何
async/awaitダークサイド is 何
 
これからの「async/await」の話をしよう
これからの「async/await」の話をしようこれからの「async/await」の話をしよう
これからの「async/await」の話をしよう
 
continuatioN Linking
continuatioN LinkingcontinuatioN Linking
continuatioN Linking
 
LINQ基本のキ
LINQ基本のキLINQ基本のキ
LINQ基本のキ
 
Async deepdive before de:code
Async deepdive before de:codeAsync deepdive before de:code
Async deepdive before de:code
 
Beachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JITBeachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JIT
 

Recently uploaded

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

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

GC本読んでJSで偽GC作った