2016-09-15 61 views
-1

我有一個實時應用程序基於RTMP的流應用程序,如果運行,會泄漏內存。不幸的是我無法通過Valgrind的運行它,因爲它是一個活生生的應用無法跟蹤Linux中的內存泄漏

這裏有 甚至幾個小時後1.應用PID內存保持不變,以3.8%的問題 2.內核內存通過slabtop保持不變 3.在meminfo,我看到可用內存不斷減少!

我如何知道誰正在佔用此內存?我懷疑TCP緩衝區或類似的東西。有人可以幫助嗎?

+0

當我添加了頂部%MEM,它不匹配使用的內存 – user6835267

+1

你確定它不只是[linux磁盤緩存](http://www.linuxatemyram.com/)。 –

+0

查看memingo中的* all *值。隨時間繪製它們,看看會發生什麼 –

回答

0

我們不可能說只有提供的信息在哪裏泄漏。

如果您不能使用Valgrind,我建議您嘗試隔離程序的各種功能/模塊。然後,嘗試禁用/啓用這些模塊,以查看在禁用/啓用它時是否存在泄漏。

例如,嘗試禁用應用程序的網絡模塊,以查看它是否繼續泄漏。這樣你可以將問題縮小到一個/各種模塊而不是整個應用程序。

0

我找到了rootcause。在Linux中將tcp內存設置爲32MB會導致問題。它重置爲87KB是CentOS中的默認值7.2

不知道爲什麼它設置爲高價值應引起問題