重複の可能性:
Java JVM起動パラメーターの読み取り(例:-Xmx)
一部の古いインストールに適切なメモリ設定がないデスクトップアプリケーションがあります。
彼らは「ランダムな」時間にパーマ生成スペースを使い果たしており、MaxPermSizeが低すぎるユーザーに警告する必要がありますが、jvmからこの設定にアクセスする方法がわかりません。
重複の可能性:
Java JVM起動パラメーターの読み取り(例:-Xmx)
一部の古いインストールに適切なメモリ設定がないデスクトップアプリケーションがあります。
彼らは「ランダムな」時間にパーマ生成スペースを使い果たしており、MaxPermSizeが低すぎるユーザーに警告する必要がありますが、jvmからこの設定にアクセスする方法がわかりません。
これはあなたにそれを行う方法についての大まかな考えを与えるはずです
public class Main {
public static void main(final String[] args) {
final RuntimeMXBean memMXBean = ManagementFactory.getRuntimeMXBean();
final String prefix = "-XX:MaxPermSize=";
final List<String> jvmArgs = memMXBean.getInputArguments();
String maxPermSize = null;
for (final String jvmArg : jvmArgs) {
if (jvmArg.startsWith(prefix)) {
maxPermSize = jvmArg.substring(prefix.length());
break;
}
}
System.out.println("MaxPermSize is " + maxPermSize);
}
}
まず、 JConsoleまたはVisualVMを接続することをお勧めします。アプリケーションでPermGenサイズを(プログラムで)決定する方法はありません。もう1つの方法は、MemoryMXBeanを使用することですが、単純なメモリレポートを実行しますが、より詳細な画像を取得するには、前述のツールを使用することに固執します。
したがって、MemoryMXBeanを使用する場合は、このコードを試してください
MemoryMXBean memMXBean = ManagementFactory.getMemoryMXBean();
memMXBean.getHeapMemoryUsage().getUsed();
memMXBean.getNonHeapMemoryUsage().getUsed();
伝達された値ではなくスナップショットデータが表示されます:)
これにより、それぞれのプロパティ値が得られます。
System.getProperty("XX:MaxPermSize");
このURLを確認してくださいJVMでMaxPermSizeを表示するにはどうすればよいですか?