Javaで優れたpermgenスペース文字列を設計するにはどうすればよいのでしょうか。私の研究と理解に基づいて、私は次のことを思いついた:
例:JAVA_OPTS='-Xmx512m -XX:MaxPermSize=256m -server -Djava.awt.headless=true'
申し訳ありませんが、最初に質問を投稿したときに例が貼り付けられませんでした......
私も質問について少し不明確ですが、permgenの最大サイズに使用するのに適した数値を意味する場合、それはアプリとロードされたクラス/メソッドの数によって異なります. それらを判断するのに役立つように、典型的で最も負荷の高いユース ケースでアプリケーションを実行し、JConsole を使用して、アプリケーションが実際に何を使用するかを確認できます。
JConsoleはすべてのヒープと永久世代スペースを表示できるため、MaxPermSize に必要な数をその方法で判断できます。これはクラス + メソッド データであるため、インスタンスの数ではなく、アプリケーションがロードするクラスの数の関数になります。また、ヒープ サイズとは別のものであることに注意してください (実際、JConsole はメモリの使用を非ヒープ メモリの使用として分類します)。私がリンクした JConsole ページで、図 5 を参照してください。これは一番右の非ヒープで、クリックできます。
Java 6 では、アプリは追加の構成なしで JConsole からの接続を許可します。Java 5 では、いくつかのフラグを設定する必要がある場合があります。これはJDKに含まれています。
参考までに、最大 10,000 個のクラスがロードされたアプリケーションの場合、MaxPermSize は 96m です。