Weblogic 12c で実行されているアプリケーションは、起動の後期段階で PermGen 領域を一時的に大量に使用します。「一時的」と言ったのは、PermGen の制限 (500MB) までは「鋸歯状」の成長を示し、その後ほぼ一定のベース レベル (約 300MB) まで即座に低下し、次のようにグラフ化するためです。. 約 5 回の長い反復の後、通常の起動が再開されます。
「-verbose:class」をオンにして実行すると、この動作中にクラスがロードまたはアンロードされていないことがわかります。
PermGen のどのような使用法がこの一連の症状を示す可能性がありますか? 私が考えることができるのは、なんらかの理由で、約1ギガバイトのインターンされた文字列が作成され、ガベージコレクションされているということだけです。
更新 これは、Solaris HotSpot 1.7 で実行されています。 文字列は Java 7 ではインターンされません。
更新 2 これは、おそらく WebLogic 固有の ServletContextInitializer によって処理されるクラスをロードしようとする際の問題のようです。ServletContextInitializers もライブラリもありません。これは、基本的な WebLogic クラスローダ スペースの一部である必要があります。そこにはたくさんあります。ServletContextInitializer の @HandlesTypes がフラグを立てているクラスで使用される基本クラス、インターフェイス、または注釈の NoClassDefFound のエラー処理にバグがあると思います。