- - PR -
VMのメモリ使用量測定方法(servlet)
1
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-11-21 11:22
環境は以下です。
Apacth1.3.26 Tomcat3.3.1 JDK1.3.1 タイトルの通りなのですが 以下のようなものを作りました。
これをログインサーブレットのinit処理で起動させます。 これで本当にjavaVMが使用しているメモリ量は取れるのでしょうか? 何か指摘箇所があればご意見ください。 セッションにobjectを持つしくみのシステムの場合、多数アクセスに よってメモリを圧迫すると思います。それらをきちんと測定できるか? (メモリの精度に関してはだいだいでいいと思ってます) また、関連した質問なのですが 一つのtomcat上に2つのwebアプリを構築したとします。 片方のwebアプリで上記メモリ測定を起動させた場合、 他方のwebアプリに対するアクセスによるメモリ使用量 もカウントしてしまいますでしょうか? イメージではtomcat起動によって一つのjavaVMが起動する と思います。そこから各々のwebアプリのクラスがロード されるのでメモリはtomcatのjavaVM単位で見るとまとめて カウントされると考えているのですが正しいでしょうか? 質問をまとめると以下です。 ・上記メモリ測定用アプリを起動させて本当にVMのメモリ使用量 を測定できるか? ・一つのtomcat上の2つのwebアプリは、双方同じVM上で動いている ので、片方にメモリ測定を起動させたら双方が使用しているメモリ 使用量を測定するか? よろしくお願いします。 | ||||||||||||
|
投稿日時: 2002-12-12 11:39
unibon です。こんにちわ。
#遅い回答ですが。
これで基本的には取得できるはずだと思います。 ただし Java VM 上から見たメモリ使用量は上述のように、 (totalMemory - freeMemory) のような引き算で求まりますが、 OS から見たメモリ使用量はあくまでも totalMemory であるため、 どちらの立場から見たメモリ使用量を気にしているのか、 という立場を明確にしたほうがよいでしょう。 多くの Java VM の実装では totalMemory は一旦増えると減ることがないので、 この違いが問題になります。 また、脇に逸れますが java の起動オプションとして -verbose:gc があるので、 実行時に java のコンソールを表示できれば、 このオプションを使うとプログラムを書かずとも そこに勝手に同様の情報が出力されるため便利です。 #コンソールを出す方法は知らないですが。
これは tomcat の仕様によると思いますが、 私は知らないのでこちらは省きます。 | ||||||||||||
|
投稿日時: 2002-12-12 15:56
>unibon様
返答ありがとうございます。
これについてはJavaVM上から見た使用メモリが知りたかったのです。 なので、とりあえず目的のメモリ使用量は取れている感じです。
これは何故なんでしょうね。 わたしも計測していて不思議に思っていました。 使用していないのに上昇したままというのもおかしい気がします。
こちらについては、tomcat起動時に一つのVMが起動しますので 複数のwebアプリケーションがあった場合は、全て同一のVMで 管理されてるということがわかいました。 ありがとうございました。 | ||||||||||||
|
投稿日時: 2002-12-12 16:56
もっとも確実で近道なのは、Borland Optimizeit Suite の
Profiler(プロファイラ)等を使用することだと思います。(^^) http://www.borland.co.jp/optimizeit/ をどうぞ。 | ||||||||||||
1
