2012-01-12 25 views
0

フロントエンドサーバが非常に高速に動作していた大きなアプリケーションで気付きましたが、最悪の場合はリクエストごとに増加していました。アプリケーションサーバーへの要求をまったく行います。私はtomcat 6.0.33、tomcat6.0.29の両方でこれに直面しました。Struts2 PermGenメモリ不足エラー

問題を特定するために、私はstrutsを空白にしてしまいましたが、私にとっては同じ傾向が見られました。これは正常ですか? maven(mvn archetype:generate)を使って2.2.1,2.2.1.1,2.2.3.1のようなstruts2のいくつかのバージョンを調べてみました。そして、それらをjettyで実行した後、私はPermGenのスペースが2-3KB。私はstruts blankとjetty-6.1.21でテストしています。

PermGenはリクエスト数の関数として増加しているので、それに伴いどれだけの価値があると思われますか?

+0

1. Webアプリケーションでこれを複数回呼び出すと、PermGenのスペースが増加しますか? 'inst = Class.forName(" com.xxx.yyy.MyClass ")。newInstance(); ... inst = null; '2.このクラスはアンロードされ、後でガベージコレクションされますか? –

+0

あなたのプロファイラの詳細についての詳細は何も言わない人にとって本当に難しいです。 –

+0

@Umesh私が知りたいのは、struts-2に関連する既知の問題がある場合です。また、上記のシナリオinst = Class.forName( "com.xxx.yyy.MyClass")。newInstance(); ... inst = null; PermGen空間のメモリリークを引き起こす可能性があります。 –

答えて

4

確実に知る唯一の方法は、プロファイラを取り付けて、どのクラスが最もメモリを占有しているのかを調べ、メモリリークを見つけようとすることです。クラッシュ時にヒープをダンプし、結果ファイルをプロファイラにロードしてクラッシュ時のヒープの状態を調べるようにjvmを構成できます。

Strutsは、多くのプロダクションWebアプリケーションで使用されています。私はそれがあなたのアプリの問題である可能性が高いと思う。