Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

VMのヒープ最大サイズを1GBより大きくする方法

javaコマンドのオプション-Xmxを使うとヒープの最大サイズを指定できますが、
実際に実行可能なのは1024mまでで、
例えば-Xmx2048mと指定すると
Could not reserve enough space for object heap
というエラーが出て実行できません。

マシンに4GBのメモリが搭載されていても
このエラーが出てしまうのですが、そういうものなのでしょうか。
このあたりの事情や、解決方法をご存知の方がいましたら
お教え頂けないでしょうか。

6

回答

64335

閲覧

6件の回答

評価

0

それほど大きなヒープサイズを必要とする、コードのほうをどうにかすべきです。

評価

130

Mineさんが記述した下記の語句を、そのままGoogleで検索すると、検索結果がたくさんありますね。
"Could not reserve enough space for object heap"
結果->http://tinyurl.com/2a4s33

>それほど大きなヒープサイズを必要とする、コードのほうをどうにかすべきです。

ヒープを大きくすることのメリット、デメリットを知っていれば、一概に、そうとはいえないのでは。

Mineさんの記述にコードの善悪についての記載はないので、一応。

評価

140

【解決】
2gb、を検索ワードに含めたらゴロゴロ出てきました。
検索の仕方が悪かったようです。
http://java.sun.com/performance/reference/whitepapers/tuning.html
http://h50221.www5.hp.com/cgi/service/knavi/production/doc_disp.cgi?category=1141&doc=jnav000398

要約すると、
・32bit Windowsだと搭載メモリの1/4が最大値の限度。
・64bit Windowsだとこの縛りはなく、搭載メモリに依存。
・あとは処理系によるが、仮想メモリ空間の使われ方の制約により3800GBが上限。

のようです。


mioさん

回答頂けたのはありがたいですが、回答になっていません。
用途についてはあえて触れませんでしたが、
事情も聞かないうちから「コードをどうにかすべき」と
投げ捨てるような回答をするのは失礼ではないでしょうか。
実際の現場では、「コードをどうにか」できない事情があることも少なくないはずです。

このような掲示板では、質問者、回答者の立場は対等のはずです。
mioさんの他の方への回答を読む限り、上からの物の言い方が多いように感じます。
マナーのなっていない質問者が多いためにそうなってしまったのかもしれませんが、
回答の仕方を一度見直されてはいかがでしょうか。

評価

0

通常のアプリケーションにおいて、2Gのヒープサイズを必要とすることは、まずありません。
本当にそのサイズを必要とすると考えられるのなら、質問で概略程度は書いてしかるべきで、
そうでなければ、動かすために「ヒープサイズを広げる」という情報だけを入手したと見なされても、仕方ありません。

直接関係ありませんが、物理メモリのうちユーザーメモリに割けるサイズはそれほど大きくありません。
32ビットのWindowsなら2GBまで(設定により3GBまで)。
それも、数多く動いているユーザープログラムが使うメモリをトータルしたものです。

評価

0

初心者と誤解したことについては、謝っておきます。
ただ、状態を明らかにするのは、回答者の仕事ではなく質問者の仕事です。
同僚や上司に直接尋ねるならともかく、ネット越しでは。

>実際の現場では、「コードをどうにか」できない事情があることも少なくないはずです。
そうですね。
ただ、後々結局コードを修正せねばならず、「なんで最初から修正しなかったんだ」という経験も、ありませんか。

つい先日も、
・あるサーバの処理が重くて10台を20台に増設、多少は良くなったが、しばらくして同じ状態に。
・SQLを見直したら負荷が1/10にも減った
ということがありました。

回答の仕方については、あなたが感じられたことを書いていただいて構いませんし、ちゃんと読ませていただきます。
でも、今後どうするかは、もちろん私が決めることです。

評価

0

そもそも、サーバー機に4GBも搭載させてくれるのか?
原因追求してソースを改修になるとおもうけど。
上長に相談すべきで、ここに相談すべき内容でないきがします。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。