Symbol

Symbol というと、Ruby では :sym のように書く奴。 こいつには

  • 静的シンボル
  • 動的シンボル

の2種類ある。STATIC_SYM_P(v) でチェックすることができる。ここでは、静的シンボルだけ説明する。

静的シンボルは、絶対に GC されないシンボル。メソッド名などで使ったシンボルが、これにあたる。理論的にはこいつらも GC 可能にできるんだけど、そのためにはとても大変な改修が必要なので、GC しないで楽をしよう、ということになった。そのため、define_method なんかを使って無限にメソッド名を作っていくと、undef しててもメモリがパンクする。