Gaucheで書いたプログラムがメモリをリークしているのですが、これの原因調査は、やっぱりコードの怪しい部分を見ていく以外ないでしょうか?特別なテクニックはありますか?
(let* ((tmp (make-huge-data))
(simple-value (calculate-a-simple-value tmp)))
(lambda () (do-something simple-value)))
本物の参照
|
|
+----+----+ +----+----+ +----+----+ +--|-+----+ +----+----+
| | --------->. | --------> | -------->. | ---------> | ---...
+----+----+ +--|-+----+ +----+----+ +----+----+ +----+----+
|
|
偽物の参照
|--------------| |-------------------------...
死んだオブジェクト 生きているオブジェクト
|----------------------------|
死んでいるが、偽物の参照に回収
が妨げてられているオブジェクト
Tag: GC