The Jakarta Project The Jakarta Tomcat Project

Tomcat

目次

Tomcat 質問集

メモリ

Printer Friendly Version
印刷用
バージョン
はじめに

このページでは、メモリに関するさまざまな問題について議論したものを紹介します。 要するに、あなたの端末のRAM容量が128MB未満だと、たぶん困るでしょう。 とにかく、他のメモリ関連の問題に関する下記のスレッドをまず読んでください。

また、 JProbeOptimizeIt、もしくは、その他のプロファイルツールを見てください。 多くの人たちがこれらのツールの利用を推奨しています。 これらの製品を推奨しているわけではありませんが、他の人たちは気に入っているようです。

質問

回答
メモリの設定はどうやって調整するの?
まず最初に、どのパラメータに設定するか決定するには java -X を見てください。 その後、環境変数 JAVA_OPTS を通して、それらを設定できます。 JAVA_OPTS に関するさらなる情報については、ファイル catalina.bat もしくは catalina.sh の中身を読んでください。

どうして、OutOfMemoryErrorというエラーが返されるの?
多くの理由が考えられます。
  • メモリオーバーです。 単純なことですが、ヒープ容量をもっと増やしてください。
  • メモリオーバーです。 オブジェクト参照に対しハングするコーディングしていたり、ガベージコレクタが処理できないためです。 こういう現象をデバッグ追跡するためのプロファイラを入手してください。
  • ファイル記述子が満杯になっています。 *nixシステム上で動かしている場合、ファイル記述子が満杯であるときにOutOfMemoryErrorがスローされるかどうかを監視します。 あなたの技術的な敷居がかなり低かったりすると、これに出くわすかもしれません。 ulimitプログラムがここで助けてくれます。 これらの敷居を考えたときに、ソケット接続に関する説明が必要かもしれません。 このトピックに関する詳しい情報を入手するには、Googleがとても役に立ちます。
  • 実行スレッドが非常に多いです。 OSによっては、単一プロセス上で実行可能なスレッド数に制限があります。 ( それはJVMが何であるかです。 ) この敷居を高くさせる方法に関する詳しい情報は、あなたの使用しているOSのドキュメントを参照してください。
  • あなたの使用しているOSには、プロセスが占有するメモリ容量に限界があります。 つまり、これはストローを強く握り締めるのと同じことなんです。
  • JVMにはバグがあります。 このことについて、JVM1.2.?で発生することがすでに知られていますし、他のサーブレットエンジンとともにEJBを使っているときも同様です。
  • はっきり言って理由にはなりませんが、プラットホーム特有の問題かもしれませんので、java -Xオプションを見てください。 それらは、とても役に立ちますよ。

Tomcat/webapp/???では、メモリをどの程度使用しているの?
  • Tomcatが使用しているメモリ容量を見つけるために、JDKで提供されいているRuntimeクラスを使用することが可能かもしれません。
  • ただし、"webapp"が使用しているメモリ容量の値を取得することはできません。 JVMはここまで詳細に示さないからです。
  • 同様に、???が使用しているメモリ容量の値を取得することは不可能です。 JVMはここまで詳細に示さないからです。
  • すでに言いましたが、メモリプロファイリングツールは上で述べたようなステートメントの間違いを検査します。 ただ、皆さんは運用環境の中でそれらを使いたくないでしょうね。


[ このページは 小川 環 によって翻訳されました。 日本語訳に関する質問については report@jajakarta.org までお願いします。 ]
Copyright © 1999-2003, Apache Software Foundation.