弱参照とソフト参照と...etcで気付いた。

  • 強参照を持つオブジェクトはGCされない。
  • 強参照を持たず、ソフト参照を持つオブジェクトはGCされるかもしれない。
  • 強参照・ソフト参照を持たず、弱参照を持つオブジェクトはGCされる。
  • 強参照・ソフト参照・弱参照を持たないオブジェクトはGCされる。

こういった参照の強度は同一性・同値性と密接に関わっているのかも。

名前 java scheme
弱参照 == eq?
ソフト参照 equals equal?

弱参照は同一性に対応する。同一オブジェクトへの他の参照がない限り、弱参照の先へ外部から到達することはない。つまり、他の参照がなくなった時点でGCの対象になる。
ソフト参照は同値性に対応する。同一オブジェクトへの他の参照がなくても、ソフト参照の先へ外部から到達する可能性がある。他の参照がなくなった時点でGCの対象にしてもしなくても構わないという特性は、もしGCされたとしても同値の別オブジェクトを生成すれば十分だという場合に有効だろう。