Java VMが確保するヒープサイズを調べる
javaの実行引数に-Xmxっていうオプションを追加することで明示的にヒープサイズを確保するわけですが、確保できる上限ってのがどうやらOSとかCPUとかに依存して一意じゃないということを会社の同期のT君に教えてもらいました。じゃぁ使っているPCはどこまで確保できるのかっていうと(かっこいいコマンドがあるのかもしれないけど)、以下のコマンドで調べられるそう。
java -Xmx1024m -version
ただのバージョン表示コマンド。で、普通にバージョン情報が表示されたらOK。1024mのところを2048mに変えて実行すると、エラーメッセージが表示される。というわけで、地道に探っていけば境界値が見えてくるというわけ。嗚呼地味だ...orz。というわけで、rubyスクリプトです。
mem = 1000 loop do break if `java -Xmx#{mem += 50}m -version` =~ /^Error.*/ end puts "最大ヒープサイズは#{mem}MBっぽいです。"