[發明專利]內存泄漏的檢測方法和裝置在審
| 申請號: | 202010621262.5 | 申請日: | 2020-06-30 |
| 公開(公告)號: | CN111858317A | 公開(公告)日: | 2020-10-30 |
| 發明(設計)人: | 程錦;梁沙沙 | 申請(專利權)人: | 北京金山云網絡技術有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京博遵律師事務所 11761 | 代理人: | 馬佑平 |
| 地址: | 100085 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 內存 泄漏 檢測 方法 裝置 | ||
本公開的實施例涉及內存泄漏的檢測方法、分布式服務的測試方法、內存泄漏的檢測裝置、計算機可讀存儲介質。所述檢測方法包括:獲取預設時間段內服務進程的使用內存值和所述服務進程管理的內部數據結構的使用內存值;基于所述服務進程的使用內存值和/或所述內部數據結構的使用內存值,判斷所述服務進程的內存是否發生泄漏。本公開的實施例提供的內存泄漏的檢測方法,能夠準確檢測內存泄漏,降低內存泄漏導致的風險。
技術領域
本發明涉及計算機技術,尤其涉及內存泄漏的檢測方法、分布式服務的測試方法、內存泄漏的檢測裝置、計算機可讀存儲介質。
背景技術
隨著硬件技術的不斷革新,內存的性價比逐漸提升,服務器的內存越來越大,內存慢慢不再成為分布式服務中的一個稀缺資源,未來分布式服務全內存化的趨勢越來越明顯。全內存化能夠有效提升分布式服務的性能,但是出現內存泄漏的潛在風險也會隨之增大。
內存泄漏(Memory Leak)是指程序里動態申請的內存空間在使用完畢之后沒有被正確釋放,導致這部分內存依然處于被占用的狀態,沒有被系統正常回收。內存泄漏會造成系統內存的浪費,還有可能會導致程序運行速度減慢甚至系統崩潰的嚴重后果。
在分布式服務中,可以查看集群中各服務器實際使用內存的情況,如果某臺服務器實際使用內存過高,認為這臺服務器可能發生了內存泄漏,這種檢測內存泄漏的方式無法定位到出現內存泄漏的具體的服務進程。或者,也可以查看服務器上有哪些服務進程在運行以及這些服務進程實際使用內存的情況,將其中實際使用內存比較高的服務進程確定為出現內存泄漏的服務進程,但是,服務進程使用內存過高還可能與集群采用的負載均衡算法等其它因素有關,因此這種檢測內存泄漏的方式的準確度不高。
因此,有必要提出一種能夠較為精確地檢測出內存泄漏的方案。
發明內容
本公開的目的在于提供一種能夠準確檢測內存泄漏的方案,以降低內存泄漏導致的風險。
根據本公開的第一方面,提供了一種內存泄漏的檢測方法,包括:
獲取預設時間段內服務進程的使用內存值和所述服務進程管理的內部數據結構的使用內存值;
基于所述服務進程的使用內存值和/或所述內部數據結構的使用內存值,判斷所述服務進程的內存是否發生泄漏。
可選地,所述獲取預設時間段內服務進程的使用內存值和所述服務進程管理的內部數據結構的使用內存值包括:獲取服務進程在啟動時刻的使用內存值和所述服務進程管理的內部數據結構在啟動時刻的使用內存值。
可選地,所述基于所述服務進程的使用內存值和/或所述內部數據結構的使用內存值,判斷所述服務進程的內存是否發生泄漏,包括:
計算第一變化率和第二變化率,所述第一變化率是所述服務進程的使用內存值在所述預設時間段內的變化率,所述第二變化率是所述內部數據結構的使用內存值在所述預設時間段的變化率;
確定所述第一變化率和所述第二變化率的差值是否在預設的第一區間內;
如果不是,判斷所述服務進程的內存發生泄漏。
可選地,所述基于所述服務進程的使用內存值和/或所述內部數據結構的使用內存值,判斷所述服務進程的內存是否發生泄漏,包括:
判斷所述服務進程的使用內存值和所述內部數據結構的使用內存值在所述預設時間段內的變化是否同步;
如果不同步,判斷所述服務進程的內存發生泄漏。
可選地,所述獲取預設時間段內服務進程的使用內存值和所述服務進程管理的內部數據結構的使用內存值,包括:
檢測預設時間段內所述服務進程的使用內存值占整機內存值的比例是否超過預設的比例閾值;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京金山云網絡技術有限公司,未經北京金山云網絡技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010621262.5/2.html,轉載請聲明來源鉆瓜專利網。





