- - PR -
Sun Javaの"-Xss"オプション
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-01-12 19:08
Red Hat 9 Linux上でSun J2SE 1.4.2を使っております。
javaコマンドのオプションに"-Xss"というのがあり、その説明は以下のようにされています。 "set java thread stack size" さて、このオプションを使うと各スレッドに割り当てられるJVMスタックサイズを調整できるようですが、これは各JVMスタックに対する初期サイズを指定するものですか? それとも最大サイズ? もしかしてその両方?(つまり常に固定サイズ) 加えて、デフォルト値はいくつでしょう? ご存知の方がいましたら教えてください。 http://java.sun.com/j2se/1.4.2/docs/tooldocs/linux/java.html を見ても説明がないし、 http://java.sun.com/docs/books/vmspec/2nd-edition/html/Overview.doc.html#6654 を見ても1.2までのことしか書いてないしで困っております。 | ||||
|
投稿日時: 2005-01-13 11:23
最大のスタックサイズです。
http://blogs.sun.com/roller/resources/watt/jvm-options-list.html デフォルト値はJVMのバージョンやOSによって違っていたという資料を見た 覚えがあるのですが、どこであったか忘れてしまいました… #確かWindows用SunJRE1.3で256KBだったか、512KBだったか… #Javaのプログラムでは、スタックに巨大な領域が確保されることはない #(自動変数はプリミティブ値かオブジェクトへの参照しかないですから) #ですので、100KBオーダーのサイズがあれば、深い再帰処理でも行わない #限り十分ではないかと思います。 #そういえば、Javaで深い再帰処理を行うソースコードって、余り見たこ #とがないですね。せいぜいツリー構造のトラバース時くらい? [ メッセージ編集済み 編集者: シュン 編集日時 2005-01-13 11:34 ] | ||||
|
投稿日時: 2005-01-13 14:27
シュンさん、情報ありがとうございます。
よくまとまっていて網羅性が非常に高いですね。助かります。 ちなみに -Xss は"set maximum native stack size for any thread"と書かれていますが、HotSpot Server VMを使う場合には、ネイティブスレッドとJVMスレッドは分離しないので、まとめて-Xssで設定可能という理解でよいのですよね? さて、最初に質問したのと環境を変えて、Red Hat Enterprise Linux 3.0 ES on Intel x86でちょっとしたテストをしてみました。 サンプルアプリは以前に別の質問で使ったやつです。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=17428&forum=12&4 最初は-Xssオプションは指定せずに実行し、pmapでメモリマップを見ると、どうも各スレッド毎に最初っから512KBが取られてるっぽいですね・・・。スレッド数を変えると概ね512KBの傾きで比例します。 今度は"-Xss1024kb"で実行すると、やはりスレッド毎に1024KBが最初から取られている。 そういうもんなのかいな? プラットフォームによって変わるのかもしれません。 | ||||
|
投稿日時: 2005-01-13 14:55
URLで示したページの-Xossの項目に、そのものズバリ書いてありますよ。 |
1