- - PR -
TOMCATとメモリの関係。。。
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-09-12 11:32
なんとなくまだわかっていないように見受けられます・・・ オプティマイザがあったってJVMの中の動きはわからないと思いますが。 結局のところ、VMがどれだけのメモリを食っているかなんて気にしたって 仕方ないですし、確保しているメモリを制御できると思うのが間違いです。 コントロールできるのはインスタンスの生き死にだけ。 気にすべきはいらないインスタンスをちゃんと片付けているか、です。 元の質問のContextのリロードで使用メモリが減らない話だって、VMが 必要なタイミングで片付けてくれます。 片付かない(メモリ使用量が純粋に増えていくだけ)のであれば、アプリで 適切にインスタンスを破棄していないので、そちら側から原因を探りましょう。 | ||||
|
投稿日時: 2003-09-13 01:50
hmm。。。 サーブレット、JavaBeanなどのオブジェクトは Eden領域に入るような短命オブジェクトでは ないため、このような問題が起きているのではと思っておりますが。 [ メッセージ編集済み 編集者: raystar 編集日時 2003-09-13 02:23 ] | ||||
|
投稿日時: 2003-09-13 02:10
unibonさん、こんにちは。 第一の目的はOutOfMemoryを抑制することです(頻繁にはおこりませんが) その後の目的としてメモリ使用量の抑制です。 インスタンスを生成して使ってしまうメモリは仕方ありませんが、 無駄に増えて解放せず遊んでいる領域(例えばリロード後の元インスタンスなど?) をできる限り落として行きたいと思っています。 -verbose:gcオプションをつけて、 テストサーバで色々実験してみようかと思います。 | ||||
|
投稿日時: 2003-09-13 02:21
レスありがとうございます。 そのとおりでございます。 同じ経験をしている人ってやっぱりいますよね。。 Contextリロードを続けることによって、 メモリが波状するということですよね。。 TOMCATがJSPをコンパイルするために、javacを呼ぶjavaインスタンスが常駐しているとも 考えることができるかな・・・(かなりあてずっぽですが) | ||||
|
投稿日時: 2003-09-13 08:38
コンパイラが常駐するというよりも、こちらの考えのほうが自然でしょうね。 Tomcat自身が使用するメモリーサイズについてはどうにもならないでしょうから、それは 置いておいて・・・気にかけているのはコンテナに載せたアプリのインスタンスリーク(?) によるものかどうかという点でしょうか。 既に実施されているかもしれませんが、シングルトンパターンが約束される簡単な プログラムを載せて、その時のメモリー変化量と実際のアプリを載せた場合の変化量を 比較してみるのはどうでしょう?恐らくどちらもアクセスがある度に増加していくと 思いますが、実際のアプリであまりにもドラスティックに変化するようであれば、 デバッグが必要になるかもしれないですね。 # 余談ですが、そもそもtop表示を過信して良いものか、という検証もあわせて必要かも。 #(注)「インスタンスリーク」は、この問題をイメージした造語でございます。 # 一般的には通用しないことをお断りしておきます。 [ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-09-13 21:26 ] | ||||
