メモリ使用量

1時間ほど動かして、キー数=4325, メモリ使用量=58720KB。
やばい。
一瞬、メモリリークか?、と思ったが、D言語にはGCがあるので、そんなことは起こらないはず。
GCがうまく動いてないか、本当に開放できない使用中メモリがこれだけあるのか…。
多分、後者かなーと。「使っている = 参照がある」と定義されると、下手なメモリリークより問題箇所の発見が難しいかも。
とりあえず、DMD(Dコンパイラ)が更新されていたので、最新バージョンを入れてみよう。
それと同時に数分おきに明示的なフルコレクトを実行してみる。
それでもだめなら、マジでダメだな。

計算上では、そこまで使用メモリは多くないはずなんです。

  • 追記

本物のWinny2だと保持キー4000個で、メモリ使用量30000KBほど。
Winnyには、GUIがあることも考えるとかなりの差がある。
C++とDの差にしてしまいたいが、そうもいかない差だ。

  • 関連

ポエニーは、検索結果ファイル数が1000を超える検索を行うと、ブラウザに表示するのに2,3秒かかる。
これは、UI側の問題で、core.exeでは極短い時間で応答を返している。
現在は、UI側でネックになっていた部分を修正して、ある程度の速度改善をしているが、遅いのは遅い。

データのコピーが負荷大きいのかな。
core.exe→webclient.pl→mozilla
ん、いや、たぶんHTMLテンプレートで変換している辺りが遅い。

  • どうでもいい話

ここで、「webclient.pl」って名前は変だと思った。
もともとcore.exeへのクライアントってことで、「client.pl」にしていて、ウェブベースにしたので、先頭に「web」をつけたんだけど…。