3

spring、hibernet、zk などを含む約 125 個の jar に依存する Web アプリケーションがあります。

Tomcat サーバーを起動すると、約 55K のクラスが permgen にロードされます。この巨大なクラスのロードのせいで、アプリケーションの起動にはかなりの時間がかかります。さらに、プログラムの実行中に他のクラスもロードされるため、アプリケーションが必要とする permgen スペースは非常に大きくなります。

  • アプリケーションが高速に起動するように、起動時に読み込まれるクラスの数を制御する方法はありますか?
  • 使用頻度の低いクラスを permgen から解放/アンロードする方法はありますか? [これらの質問は、外部 jar からロードされるクラスに固有のものです]

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled オプションを Java に指定してみました。しかし、しばらくしてアンロードされたクラスは 42 個だけでした。

ヘルプやポインタは大歓迎です。

4

2 に答える 2

0

ツールを使用して不要なクラスを削除することもできます。

この質問は、まさにこの問題を扱っています。

Java プロジェクトの不要な依存関係を削除するツール

しかし、Oracleに関するこの質問はより役立つかもしれません:

https://forums.oracle.com/forums/thread.jspa?threadID=1311910

ただし、GenJar2 ( http://code.google.com/p/genjar2/ ) がお客様のニーズに最も適していると思います。

于 2012-10-02T10:59:19.063 に答える