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

メモリ量との戦い

研究日誌

Javaプログラムが「ヒープメモリが足りません(java.lang.OutOfMemoryError)」というエラーを吐いて止まったとき、どうしますか?
普通ならコマンドラインでヒープメモリ量の上限を増やして再実行させてみますね。Web検索で調べても大抵そうしろと書いてあります。
だけどこっちはそんな甘い作業さしてないのさ。メモリがあればあるだけ使ってハッシュテーブルを拡張したいんです。足りなければその分はハッシュに収めないで我慢するから、と。
だから、ヒープメモリの残りを確認しながら食いつぶしていかないといけない。でもね、確認すると言っても取得できる残りメモリ量の値がまた食わせ物なんですよ。
40KB以上余ってるからまだ平気、と作業させているといきなりメモリ不足エラーで止まる。あれいきなり? それに、現在バーチャルマシンが確保しているメモリ量の中での残量しかわからないから、まだヒープを拡大することができてもそれがわからず残り少ないように見えてしまったり。
ったくどうしてくれようか。