Javaアプリケーション内のPermgenのサイズを決定する方法(つまり、プログラムで)?

StackOverflow https://stackoverflow.com/questions/4071440

質問

  1. 現在を測定する方法はありますか 使用済み 私のJavaアプリケーション内の永久生成(Permgen)のサイズ? VisualVMなどの外部プロファイリングツールは使用できません。

  2. さらに良いのは、PermgenのJavaクラスのメモリ消費の推定です。 ByteCodeファイルのサイズにほぼ比例しますか?

役に立ちましたか?

解決

JDKに付属のMemoryMXBeanを使用できます。しかし、実行中のアプリケーション内からPermgenの使用法を照会する方法はないと思います。ドキュメントについて MemoryMXBean.

他のヒント

使用できます jvisualvm JDKからのツール ビジュアルGC Permgenを含むすべてのJVMヒープ領域を監視するプラグイン。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top