¿Hay alguna característica entregada en Java que notifique una escasez de memoria en una aplicación (o notifique que ha alcanzado un nivel predefinido)?Notificación de falta de memoria en Java
Me preguntaba si era posible registrar un oyente (o algo equivalente) en alguna parte? Sé sobre los métodos de memoria en la clase Runtime. Podría crear una tarea programada comprobando la memoria restante, pero me pregunto si ya existe una solución.
No lo creo, pero estoy buscando una confirmación.
para los registros
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 para publicar su código! – Andy
@Andy Eso es lo que paso de leer a través del Javadoc. No completamente probado, pero la idea está ahí .... – JVerstry