2009-07-28 17 views
1

Tomcatが実行中に使用するメモリの種類がいくつかあります。Tomcatが使用するメモリの種類とその制御方法

唯一私が使用した - javaヒープ。それは-XXもあることを私が発見した

「-Xmx128M -Xms64M」のような何かをJAVA_OPTSのENVプロパティを介して制御することができる:MaxPermSizeを、-XX:MaxNewSizeとなど

私が求めている理由私はTomcat5.5を200MbのRAMメモリ(VPSサーバー)で起動しようとしているということです。私は、 '-Xmx128M -Xms64M'を使ってJavaのヒープサイズを設定していますが、起動時にそれよりも多くのものを消費します(起動できない場合は起動時にOutOfMemoryExceptionが発生してバットが失敗する)

注目すべきことは、mavenのtomcatプラグインを起動するとうまくいきます。別のTomcatだけがメモリで失敗します。

あなたのアイデアを事前におねがいします。

答えて

2

ヒープメモリは、JVMのメモリプールの1つに過ぎません。

それらを制御する方法を、彼らが何であるかのアイデアを得るために、これを読んで、それらを監視する方法:JVMが管理する

http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html

ヒープおよび非ヒープメモリ2種類のメモリ: ヒープメモリと非ヒープメモリ、どちらも起動時に を作成しました。

ヒープメモリはランタイムデータ領域 で、JVMはすべてのクラスインスタンスと配列に対してメモリ を割り当てます。 ヒープは、固定または可変の サイズです。ガベージコレクタは、オブジェクトのヒープメモリを回収する 自動メモリ管理システム です。

非ヒープメモリには、すべてのスレッドで共有されるメソッド領域 と、内部処理 またはJVMの最適化に必要なメモリ が含まれています。ランタイム 定数プール、フィールドおよびメソッドデータ、 およびメソッドのコードと コンストラクタなど、クラスごとの構造体には が格納されます。メソッド領域は であり、論理的にはヒープの一部ですが、実装によっては になります。 はガベージコレクションやコンパクトではありません。 ヒープと同様に、メソッド領域は固定サイズまたは可変サイズの です。メソッド領域のメモリ は、連続する を必要としません。

方法エリアのほか、JVM 実装は、非ヒープメモリに属する​​ 内部処理または最適化 ためのメモリを必要とするかもしれません。 たとえば、JITコンパイラでは、 のネイティブマシンを格納するためのメモリが、 のJVMコードから変換されたコードを必要とします。

0

Javaヒープサイズの設定に関するヒントについては、hereを参照してください。 Tomcatがアプリケーションを展開しなくてもOutOfMemoryExceptionsを提供していることは非常に奇妙です。おそらくあなたの設定に何か問題があります(どのOSを使用していますか、Tomcatをどうやって起動しますか?)。

関連する問題