Tengo una memoria caché interna que se celebra en el montón. Me gustaría notificar cuando el montón se utiliza 80% (después de la recogida gc) de modo que pueda organizar para el tamaño del montón que aumentarse (o alguna otra acción)
Estoy echando un vistazo a: https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryMXBean.html , específicamente: https://docs.oracle.com/javase/ 7 / docs / api / java / lang / gestión / MemoryNotificationInfo.html # MEMORY_COLLECTION_THRESHOLD_EXCEEDED
Parece que puedo establecer el umbral aquí: https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryPoolMXBean.html#setCollectionUsageThreshold(long) , sin embargo no estoy seguro si esto tendrá ningún indeseado afecta.
¿Cuál es la mejor manera de lograr lo que busco?
Puede echar un vistazo a la forma de la colmena lo hace en HeapMemoryMonitor
la clase que exige MemoryPoolMXBean.setUsageThreshold()
método después de que las comprobaciones se realizan.
Si desea umbral establecido al 80% se debe calcular el valor como:
MemoryPoolMXBean pool = ...
pool.setUsageThreshold((long) Math.floor(pool.getUsage().getMax() * 0.8));