Java'da bir uygulamada bellek eksikliğini bildiren herhangi bir teslim özelliği var mı (veya önceden tanımlanmış bir seviyeye ulaştığını bildiren) var mı?Java'da bellek kıtlığı bildirimi
Bir yerde bir dinleyici (veya benzer bir şey) kaydetmenin mümkün olup olmadığını mı merak ediyordum? Runtime sınıfındaki bellek yöntemlerini biliyorum. Kalan hafızayı kontrol etmek için zamanlanmış bir görev oluşturabilirim, ama zaten mevcut bir çözüm olup olmadığını merak ediyorum.
Sanmıyorum, ama bir onay arıyorum. KAYIT
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);
+1 kodunuzu ilan için! – Andy
@Andy Javadoc'la okumaya gidiyorum. Tam olarak test edilmedi, ama fikir var .... – JVerstry