読者です 読者をやめる 読者になる 読者になる

マルチスレッドではメモリ容量に余裕を

Javaプログラムがメモリ(ヒープメモリ)を食い尽くしてインスタンスを生成できなくなると、OutOfMemoryErrorが投げられます。
そもそもこんなエラーを発生させている時点で負けだし、Javaのマニュアルにもはっきりと、OutOfMemoryErrorをキャッチしようとするな、と書いてあります。
でもキャッチして処理しようと思えば何とかできちゃうんだな。メモリ空間内でできるだけ大きなゲーム木を生成するのが今の研究では結構キモなので、こっそり使ってますOutOfMemoryErrorのキャッチ。
ところが、マルチスレッドのプログラムではこの技が使えません。
マルチスレッドで動作しているプログラムでヒープメモリが不足すると、OutOfMemoryErrorが、すべてのスレッドに同時に発生します。「戦犯」のスレッドは、どこでメモリ不足を起こすか大体わかっているんだけど、別のスレッドはいつどこでエラーに襲われるかわからない。しかも、わかったとしても他スレッドは
エラーをキャッチすることができないのです。つまり、自動的にスレッド異常終了。
役に立たないスレッドの知識でした。