2012-01-14 16 views
0

私は300〜400のスレッドを作成するアプリケーションを持っています。すべてのスレッドは、実行されるべき別のジョブを持っており、終了する予定は誰にも分かりません。だから私は彼らのアプリケーションがすべてのスレッドが終了するまで待つようにそれらに参加しました。しかし、私はソフトウェアを実行し、実行されているスレッドの数を追跡すると、スレッド数も減少しているので、メモリ内のアプリケーションサイズはまだ大きくなります。 Ruby 1.9.2でスレッドがクリーンアップされたかどうかは疑問ですが、そうでない場合はどうしたらいいですか?実行終了後、スレッドはメモリから自分自身を削除しますか?

+0

各スレッドを結合した後に 'GC.collect'を呼び出すとどうなりますか? – Linuxios

答えて

0

私が知っている限り、Ruby(MRI)は、一旦それが割り当てられると、システムにメモリを解放しません。

これは再利用できますが、プロセスが終了するまでメモリは解放されません。

+0

スレッドが終了してもメモリ内のアプリケーションサイズが増え続けるため、再利用しているとは思わない – gkaykck

+1

さて、そこにはリークがあるかもしれません。 –

+0

Rubyのリーク?拡張子が使われていない限り、それはできません。 – Linuxios

関連する問題