From: Masaki Fukushima Date: 1998-11-24T19:09:52+09:00 Subject: [ruby-dev:3657] eval memory leak 福嶋です。 Marshal で大量の Object の load を繰り返したところ、ruby のメモリ使用 量が少しづつ増えていくのに気が付きました。 オブジェクトを復元するために rb_path2class を呼んでクラス名の eval を 行っているところが原因のようだったので、試しに単純化して以下のようなス クリプトを実行させました。 #!/usr/local/bin/ruby while true eval "true" end すると、やはりメモリ使用量が増加したので eval が原因だとわかりました。 とりあえず、以下のように修正したところ、この現象はなくなりました。 ruby-1.1c8 への差分です。 --- parse.y.orig Tue Nov 24 18:42:14 1998 +++ parse.y Tue Nov 24 18:44:21 1998 @@ -1653,7 +1653,11 @@ eval_tree = 0; newline_seen = 0; - sourcefile = strdup(f); + if (strcmp(f, "(eval)") == 0) { + sourcefile = "(eval)"; + } else { + sourcefile = strdup(f); + } rb_in_compile = 1; n = yyparse(); rb_in_compile = 0; ---- 福嶋正機