0

私たちは、お客様が本番環境で展開する Java ベースの製品に取り組んでいます。Java ヒープ メモリが特定のしきい値に達すると、ログ ファイルに行をダンプする必要があります。製品は本番環境でお客様のサイトに展開されるため、外部ツールやプロファイルを使用することはできません。唯一のオプションは、コードからプログラムで行うことです。間隔内でスリープし、Runtime.getRuntime().freeMemory() を呼び出し、出力に基づいてログに書き込むスレッドを実装することを考えています。ただし、これに使用できる他のより良いアプローチ/より良い API があるかどうかを知りたいと思いました。

4

1 に答える 1

2

私はMemoryMXBean自分自身を使用します。説明した種類の通知を提供することもできます (ヒープしきい値を超えました)。このサンプルコードは、Javadoc から直接引用したものです。

class MyListener implements javax.management.NotificationListener {
    public void handleNotification(Notification notif, Object handback) {
        // handle notification
        ....
    }
}

MemoryMXBean mbean = ManagementFactory.getMemoryMXBean();
NotificationEmitter emitter = (NotificationEmitter) mbean;
MyListener listener = new MyListener();
emitter.addNotificationListener(listener, null, null);
于 2013-02-15T11:36:23.340 に答える