2017-02-10 65 views
1

我有一個使用paho mqtt庫的應用程序。 我注意到VisualVM中,似乎有我的應用程序中的內存泄漏。如何解決MQTT應用程序的內存泄漏問題?

下面是一些截圖:enter image description here所有的

首先我不understant爲什麼有這樣的一些峯值,如果有人能解釋我這一點,我將不勝感激。 然後你可以看到,在開始的應用程序開始時,大約5Mb的內存和完成超過10Mb,我斷定有一個內存泄漏的地方,對吧?

下面是截圖我進行garbace收集後: enter image description here

你可以看到,它返回到5Mb的左右的內存,但時間後,仍然長的時間。

我不知道這是否會是有用的,但我花了截圖就知道來自哪個線程該內存的增長來自於:

enter image description here

我希望有人能夠幫助我。非常感謝 !

回答

1

該圖看起來像一個generational garage收集器的輸出,並且不顯示內存泄漏。鋸齒是年輕一代的工作,基線的增加是長壽命的數據被複制到老一代。

圖形在觸發收集後重置爲5mb的事實是舊一代正在清理並釋放從年輕一代複製過來的現在未被引用的數據。

1

這是一個Heisenbug。換句話說,you are observing that you are observing(很好地說,我不得不鏈接它)。 JMX正在使用內存來通過RMI向您發送內存統計信息。如果您想知道您的應用程序真的在吃什麼,請定期查詢Runtime.max/total/freeMemory並將其記錄到文件或其他內容。

相關問題