簡體   English   中英

從代碼監視內存使用情況

[英]Monitoring memory usage from the code

我們正在開發基於Java的產品,由我們的客戶在生產中部署。 需要當Java堆內存達到特定閾值時,我們應該在日志文件中轉儲一行。 由於產品部署在生產中的客戶現場,因此我們無法使用任何外部工具或配置文件。 唯一的選擇是從代碼中以編程方式執行。 我正在考慮實現一個將在間隔內休眠並調用Runtime.getRuntime()。freeMemory()的線程,並根據輸出將寫入日志。 但是,我想知道是否還有其他更好的方法/更好的API可供我們使用。

我自己使用MemoryMXBean 它甚至可以提供您描述的排序通知(超出堆閾值)。 示例代碼直接從Javadoc中提取:

class MyListener implements javax.management.NotificationListener {
    public void handleNotification(Notification notif, Object handback) {
        // handle notification
        ....
    }
}

MemoryMXBean mbean = ManagementFactory.getMemoryMXBean();
NotificationEmitter emitter = (NotificationEmitter) mbean;
MyListener listener = new MyListener();
emitter.addNotificationListener(listener, null, null);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM