GCをデバッグに使ったらいいんですよ。 ゴミ見つけたらタイーホ
ゴミを見つけるくらいならC言語でもできる!!(glibc依存だけど)
#include <stdlib.h> #include <mcheck.h> int main() { char *ptr; mtrace(); ptr =malloc( 1 ); free( ptr ); ptr =malloc( 1 ); ptr =malloc( 2 ); ptr =malloc( 3 ); muntrace(); return 0; }
こんな感じにして、
$ export MALLOC_TRACE=log $ ./nanika $ mtrace ./nanika log Memory not freed: ----------------- Address Size Caller 0x0804a3c8 0x1 at /home/wo/test/malloc.c:10 0x0804a3d8 0x2 at /home/wo/test/malloc.c:11 0x0804a3e8 0x3 at /home/wo/test/malloc.c:12
まず、MALLOC_TRACEで、mallocログの出力先を指定。
んで、プログラム実行。ここで、ログが出力。あとは、mtraceでログ観賞。
こういうふうに、ツールやライブラリを駆使して色々やる楽しみっていうのは、GC無し言語だと味わえないとかいう話なんです。昨日のは。あまり健康的ではないとわかってるんだけど。
あと、まあ、
http://www-06.ibm.com/jp/developerworks/java/051104/j_j-jtp09275.shtml
こんな時代にGC無しにこだわるというのは頭のイタい人のすることだ、という意見はもっともなんだとは思うんだけど、たとえば、全てのアプリケーションが、Javaでーあー、時間が無い。会社行かないと。返ったら書きます。そんなに長くないんだけど。スワップ。スワップがあるんだ!!Javaには。メモリ使いすぎ。起動遅い。