Javaアプリケーション内のPermgenのサイズを決定する方法(つまり、プログラムで)?
-
28-09-2019 - |
質問
現在を測定する方法はありますか 使用済み 私のJavaアプリケーション内の永久生成(Permgen)のサイズ? VisualVMなどの外部プロファイリングツールは使用できません。
さらに良いのは、PermgenのJavaクラスのメモリ消費の推定です。 ByteCodeファイルのサイズにほぼ比例しますか?
解決
JDKに付属のMemoryMXBeanを使用できます。しかし、実行中のアプリケーション内からPermgenの使用法を照会する方法はないと思います。ドキュメントについて MemoryMXBean.
他のヒント
Windowsにいない場合は、試すことができます jmap JDKに出荷されます。
使用できます jmap
指図:
jmap [option](実行プロセスに接続するため)
jmap [option](コアファイルに接続するため)
jmap [option] [server_id@](リモートデバッグサーバーに接続するため)
オプションは次の1つです:
-HEAP:Javaヒープの要約を印刷します
-permstat:永続的な生成統計を印刷する
Permgenのサイズは、クラスファイルのサイズとは何の関係もありません。 Sunに応じたPermgenのデフォルトサイズは64 MBです。あなたがそれを増やしたい場合、あなたはそれを明示的に使用して設定することができます:
-XX:PermSize=164m
Javaコマンドラインまたはスタートアップスクリプトで。これは、外部ツールに頼らずにそれが何を設定しているかを知る方法でもあります。
編集:
この記事を読んで、現在プログラムで使用されているPermgenの量をほぼ決定します(つまり、外部ツールはありません):
http://frankkieviet.blogspot.com/2006/10/how-to-fix-dreaded-permgen-space.html