7

アプリケーションのメモリ不足を通知する(または事前定義されたレベルに到達したことを通知する)Javaで提供される機能はありますか?

リスナー(または同等のもの)をどこかに登録できるかどうか疑問に思いました。Runtimeクラスのメモリメソッドについて知っています。残りのメモリを自分でチェックするスケジュールされたタスクを作成することもできますが、既存のソリューションがすでに存在するかどうか疑問に思っています。

そうは思いませんが、確認を求めています。

記録のために

MemoryMXBean mbean = ManagementFactory.getMemoryMXBean();
NotificationEmitter emitter = (NotificationEmitter) mbean;
NotificationListener listener = new NotificationListener() {

    @Override
    public void handleNotification(Notification notif, Object handback) {

        String notifType = notif.getType();
        if (notifType.equals(MemoryNotificationInfo.MEMORY_THRESHOLD_EXCEEDED) ||
            notifType.equals(MemoryNotificationInfo.MEMORY_COLLECTION_THRESHOLD_EXCEEDED)) {

            // Retrieve the memory notification information
            CompositeData cd = (CompositeData) notif.getUserData();
            MemoryNotificationInfo info = MemoryNotificationInfo.from(cd);
            MemoryUsage mu = info.getUsage();

            System.out.println("Maximum memory = " + mu.getMax());
            System.out.println("Used memory    = " + mu.getUsed());

        }
    }

};

emitter.addNotificationListener(listener, null, null);
4

1 に答える 1

6

MemoryMXBeanを使用して、メモリ使用量のしきい値のリスナーを設定できると思います。サンプルコードはjavadocリンクで提供されています。

于 2011-05-27T22:39:16.723 に答える