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