OOC予告編 / GC-internals

OOC予告編 / GC-internals

【代々木】オブジェクト指向LT会 vol.1 sponsored by ラクス
https://rakus.connpass.com/event/162841/

Dcfa005284131fd4052e767962205f93?s=128

Akira Morikawa

February 02, 2020
Tweet

Transcript

  1. 次回予告

  2. ── オブジェクトはすべてゴミではないか

  3. ── オブジェクトはどこからきて、 どこへ向かっているのだろうか ──

  4. 「瞬間、捨てられる 運命」 第弐壱六話

  5. 5 ※上記コードの System.gc() および finalize() メソッドはあくまでデモ目的であり、非推奨の仕組みです $ java Demonstration Foundation

    Constructor Demonstration Constructor Demonstration Destructor Foundation Destructor
  6. 6 ※上記コードの System.gc() および finalize() メソッドはあくまでデモ目的であり、非推奨の仕組みです $ java Demonstration Foundation

    Constructor Demonstration Constructor
  7. 7 オブジェクトのライフサイクルは いったいどうやって管理されてるんだろう?

  8. 8 new Demonstration();

  9. • メモリをいつから確保してるの? • メモリを何バイト確保してるの? • メモリはいつ解放されるの? • オブジェクトはいつまで生き続けるの? 9 new

    Demonstration();
  10. VM Heap VM Stack 10 Garbage Collection in Java From

    To Eden Survivor New Old ( Tenured ) Permenent Javaにおけるメモリ領域イメージ
  11. VM Heap VM Stack 11 Garbage Collection in Java From

    To Eden Survivor New Old ( Tenured ) Permenent Javaにおけるメモリ領域イメージ 新しいオブジェクトはEden領域に割り当てられる
  12. VM Heap VM Stack 12 Garbage Collection in Java From

    To Eden Survivor New ( Young ) Old ( Tenured ) Permenent #1 : Young GC 不要なものがゴミとして回収され、必要なものは次の領域にコピーされる(コピーGC)
  13. VM Heap VM Stack 13 Garbage Collection in Java From

    To Eden Survivor New ( Young ) Old ( Tenured ) Permenent 次のGCが発生する直前、From-Toが逆転する #2-1 : Young GC
  14. VM Heap VM Stack 14 Garbage Collection in Java From

    To Eden Survivor New ( Young ) Old ( Tenured ) Permenent #2-2 : Young GC Eden→To, From→ToのコピーGCが行われる From→Toを繰り返すごとにオブジェクトの年齢が増えていく
  15. VM Heap VM Stack 15 Garbage Collection in Java From

    To Eden Survivor New ( Young ) Old ( Tenured ) Permenent #3 : Young-to-Old GC GCの際にオブジェクトの年齢が一定数に達したものをTenuredへ移動する
  16. VM Heap VM Stack 16 Garbage Collection in Java From

    To Eden Survivor New ( Young ) Old ( Tenured ) Permenent #4 : Old GC ( Full GC ) Tenured領域はこれ以上次がないので、空き領域の回収を行う(Mark-and Compact GC)
  17. VM Heap VM Stack 17 Garbage Collection in Java From

    To Eden Survivor New Old ( Tenured ) Permenent 直接Tenuredが使われるパターン Eden領域が不足している場合、直接Tenuredにオブジェクトが登録される
  18. VM Heap VM Stack 18 Garbage Collection in Java From

    To Eden Survivor New Old ( Tenured ) Permenent OutOfMemoryException オブジェクトが格納できる連続したメモリを確保できない場合OOMEが発生する
  19. 19 Garbage Collection in Java GCの歴史と実装 • Serial GC •

    Parallel GC • G1 GC • Shenandoah GC • ZGC • Epsilon GC GCにおける課題 • Stop the World
  20. 20 Garbage Collection in Other Languages GC関連トピック • 他の言語におけるGC実装 ◦

    PHP ◦ Golang • 関連する実装 ◦ Weak Reference ◦ Soft Reference
  21. • メモリをいつから確保してるの? • メモリを何バイト確保してるの? • メモリはいつ解放されるの? • オブジェクトはいつまで生き続けるの? new Demonstration();

    21 再 掲
  22. 22 私たちは数えきれないほど new を 重ねているのに あなたのことをまったく知らなかった

  23. 23 To be continued... 16:00-16:40 | 共2-101

  24. Feb 16, 2020 at Ochanomizu Univerity

  25. あなたもアウトプットしよう! June 27, 2020 | #技書博