java – 当达到80%的堆使用时通知

我有一个内部缓存,它保存在堆上.我想在堆使用率达到80%时(gc收集后)通知我,以便我可以安排增加堆大小(或其他一些操作)

我正在看一下:https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryMXBean.html,具体来说:https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryNotificationInfo.html#MEMORY_COLLECTION_THRESHOLD_EXCEEDED

看起来我可以在这里设置阈值:https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryPoolMXBean.html#setCollectionUsageThreshold(long),但我不确定这是否会产生任何不良影响.

实现目标的最佳途径是什么?

解决方法:

您可以查看Hive在HeapMemoryMonitor class中如何执行多次检查后调用MemoryPoolMXBean.setUsageThreshold()方法.

如果要将阈值设置为80%,则应将该值计算为:

MemoryPoolMXBean pool = ... 
pool.setUsageThreshold((long) Math.floor(pool.getUsage().getMax() * 0.8));
上一篇:如何使用JMX从管理应用程序启动java程序


下一篇:java – 需要安装多少个Jolokia代理?