0

JSP ページのこの行でエラーが発生します。

    <table:table name="sessionScope.users" sort="external" pagesize="50" id="user" class="list" 
    requestURI="/admin-users.html" partialList="true" size="sessionScope.fullListSize">

eclipse の呼び出しと Tomcat のインスタンスの両方について、他の投稿にあるメソッドを使用して、perm gen max を 512m に増やしてみました。

わかりましたので、もう少しコンテキストが必要です。これは私の開発システムであり、Eclipse で実行され、Eclipse 内のサーバーである tomcat のスタンドアロン インスタンスを指しています。

Recurring "PermGen" in Tomcat 6によると、eclipse.ini には次のように記述されています。

--launcher.XXMaxPermSize
512m

// ...

-XX:MaxPermSize=512m
-XX:+UseConcMarkSweepGC
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled
-Xms256m


-Xmx512m
4

2 に答える 2

0

Tomcat に何度も再デプロイした可能性があります。Tomcat をバウンスすれば問題ありません。再起動が多すぎて perm gen スペースがいっぱいになるまでは。

アップデート:

そのページにアクセスするたびにそれが起こっているとしたら、あなたのページが何をしているのか心配です. JSP は、後で .class ファイルにコンパイルされるサーブレットのテンプレートです。その JSP が大きすぎて perm gen スペースがいっぱいになると、大きな問題が発生します。

リーク検出に関するすべての提案は、私には間違っているようです。リークは通常、時間の経過とともに現れます。以下では、すべてのアクセスで発生すると述べました。

次のことをお勧めします。

  1. Eclipse は除外してください。手動で WAR をデプロイして Tomcat を起動すると、同じ動作が見られますか? Eclipse の起動が間違っている可能性があります。
  2. メモリと perm gen スペースのサイズを調整できます。Google で JVM オプションを調べて、その方法を確認してください。
  3. Visual VM 1.3.3をダウンロードし、すべてのプラグインをインストールして、Tomcat を実行する前に起動します。あなたの記憶に何が起こっているかをリアルタイムで見てみましょう。スレッドなど、他にも多くの有用なものを見ることができます。推測ではなく、より多くのデータが必要です。
于 2011-11-24T01:07:44.530 に答える
0

適切に作成された webapp は、再デプロイされたときにクラスローダーにハングアップするべきではありませんが、それには多くの理由があります。

Tomcat で実行している場合は、 でこれを試してみてくださいserver.xml:

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

このページには、より多くの情報があります。

于 2011-11-24T01:11:55.197 に答える