本發(fā)明涉及計算機科學與,特別是一種定位內存泄漏的方法。
背景技術:
1、在現(xiàn)代軟件開發(fā)和系統(tǒng)運維領域,內存管理一直是確保系統(tǒng)穩(wěn)定性和性能的關鍵因素之一。隨著計算技術的發(fā)展,軟件系統(tǒng)變得越來越復雜,內存泄漏問題也隨之日益凸顯。內存泄漏不僅會導致系統(tǒng)資源的浪費,還可能引發(fā)性能瓶頸甚至系統(tǒng)崩潰。因此,開發(fā)高效、可靠的內存泄漏檢測和管理技術已成為業(yè)界關注的重點。
2、本發(fā)明通過引入動態(tài)閾值調整機制,能夠在系統(tǒng)運行過程中根據cpu利用率和內存使用趨勢的變化動態(tài)調整內存使用率閾值。這與現(xiàn)有技術中通常采用固定閾值的方式相比,能夠更好地適應系統(tǒng)運行環(huán)境的變化。
技術實現(xiàn)思路
1、鑒于上述現(xiàn)有存在的問題,提出了本發(fā)明。
2、因此,本發(fā)明提供了一種定位內存泄漏的方法解決內存泄漏檢測方法缺乏動態(tài)閾值調整機制、難以準確定位內存泄漏位置及原因的問題。
3、為解決上述技術問題,本發(fā)明提供如下技術方案:
4、第一方面,本發(fā)明實施例提供了一種定位內存泄漏的方法,其包括,
5、初始化內存使用監(jiān)測模塊,設置初始的內存使用率閾值,定義閾值調整參數;
6、實時監(jiān)測cpu利用率和內存使用情況,記錄歷史數據并建立內存使用趨勢模型;
7、當cpu利用率超過設定的cpu利用率閾值時,降低內存使用率的第一預設閾值,根據內存使用趨勢調整第二預設閾值,基于調整后的第一預設閾值和第二預設閾值綜合調整內存使用率閾值;
8、當內存使用率超過第一預設閾值時,啟動內存泄漏檢測,使用哈希表記錄內存分配和釋放信息,查找未被釋放的內存;
9、分析內存泄漏前后系統(tǒng)的日志和行為記錄,構建因果關系模型,分析內存泄漏與其他系統(tǒng)行為之間的因果關系;
10、根據因果關系的結果調整內存使用率閾值,優(yōu)化閾值設置,并生成包含內存泄漏位置及其原因分析的報告。
11、作為本發(fā)明所述定位內存泄漏的方法的一種優(yōu)選方案,其中:設置初始的內存使用率閾值;
12、所述閾值調整參數中的參數為cpu利用率閾值、內存使用趨勢閾值;
13、根據cpu利用率閾值設置第一預設閾值,根據內存使用趨勢閾值設置第二預設閾值。
14、作為本發(fā)明所述定位內存泄漏的方法的一種優(yōu)選方案,其中:使用系統(tǒng)調用持續(xù)監(jiān)測cpu利用率和內存使用情況;
15、將每秒的cpu利用率和內存使用量記錄到歷史數據中;
16、使用歷史數據建立內存使用趨勢模型,預測未來的內存使用趨勢,其表達式為:
17、;
18、其中,表示內存使用趨勢模型預測的內存使用趨勢,a表示初始內存使用量的基礎值,e表示自然對數的底數,b表示存使用量隨時間增長的速度,t表示從初始時刻開始的時間間隔,c表示內存使用量的基礎值。
19、作為本發(fā)明所述定位內存泄漏的方法的一種優(yōu)選方案,其中:當cpu利用率超過初始設定的內存使用率閾值時,系統(tǒng)會自動降低內存使用率的第一預設閾值,其表達式為:
20、;
21、其中,表示調整后的第一預設閾值,表示原始的第一預閾值,表示cpu利用率超出時的閾值調整系數,表示超出的cpu利用率,表示閾值調整參數;
22、根據內存使用趨勢調整第二預設閾值,當系統(tǒng)監(jiān)測到內存使用趨勢發(fā)生變化時,系統(tǒng)會相應地調整第二預設閾值,其表達式為:
23、;
24、其中,表示調整后的第二預設閾值,表示原始的第二預閾值,表示趨勢調整系數。
25、作為本發(fā)明所述定位內存泄漏的方法的一種優(yōu)選方案,其中:根據實時監(jiān)測到的cpu利用率和內存使用趨勢模型動態(tài)調整閾值,其表達式為:
26、;
27、其中,表示調整后的內存使用率閾值,表示cpu利用率對內存使用率閾值調整的影響系數,u表示當前的cpu利用率,表示內存使用趨勢對內存使用率閾值調整的影響系數,表示閾值調整參數,表示閾值調整的基礎值。
28、作為本發(fā)明所述定位內存泄漏的方法的一種優(yōu)選方案,其中:當實時監(jiān)測到的內存使用率超過第一預設閾值時,系統(tǒng)將使用哈希表來記錄內存分配和釋放的信息,每個內存塊將被賦予一個唯一的標識符,并記錄其分配和釋放的狀態(tài),其表達式為:
29、;
30、其中,h表示哈希表,id表示內存塊的唯一標識符,a表示已分配,b表示已釋放,c表示泄露,表示內存塊在時間是否被分配,表示內存塊在時間是否被釋放,表示內存塊在時間中是否被標記為泄漏;
31、在哈希表中查找泄漏的內存塊,其表達式為:
32、;
33、其中,q表示未被釋放的內存塊數量。
34、作為本發(fā)明所述定位內存泄漏的方法的一種優(yōu)選方案,其中:分析內存泄漏前后系統(tǒng)的日志和行為記錄,構建因果關系模型,分析內存泄漏與其他系統(tǒng)行為之間的因果關系,其表達式為:
35、;
36、其中,表示事件集合e與內存泄漏的相關性得分,表示事件e的頻率,表示事件e的重要性,表示事件e與內存泄漏的相關性,表示事件e發(fā)生的時間與內存泄漏發(fā)生的時間間隔,表示時間衰減系數,表示所有可能的事件空間;
37、分析因果關系,其表達式為:
38、;
39、其中,表示在事件集合e發(fā)生的情況下,內存泄漏c的概率,表示在事件e發(fā)生的情況下,內存泄漏c的概率,表示事件e發(fā)生的概率。
40、作為本發(fā)明所述定位內存泄漏的方法的一種優(yōu)選方案,其中:根據因果關系的結果調整內存使用率閾值,優(yōu)化閾值設置,其表達式為:
41、;
42、其中,表示調整后的內存使用率閾值,表示趨勢調整系數函數;
43、生成包含內存泄漏位置及其原因分析的報告,其表達式為:
44、;
45、其中,表示對位置l的綜合評分,表示在位置相關的事件集合發(fā)生的情況下,內存泄漏c發(fā)生的條件概率,表示位置相關的事件集合與內存泄漏的相關性得分,表示位置對應的當前時間點預測的內存使用量;
46、基于得到的位置綜合評分,撰寫內存泄漏位置及其原因分析報告。
47、第二方面,本發(fā)明實施例提供了一種計算機設備,包括存儲器和處理器,所述存儲器存儲有計算機程序,其中:所述計算機程序被處理器執(zhí)行時實現(xiàn)如本發(fā)明第一方面所述的定位內存泄漏的方法的任一步驟。
48、第三方面,本發(fā)明實施例提供了一種計算機可讀存儲介質,其上存儲有計算機程序,其中:所述計算機程序被處理器執(zhí)行時實現(xiàn)如本發(fā)明第一方面所述的定位內存泄漏的方法的任一步驟。
49、本發(fā)明有益效果為:通過持續(xù)監(jiān)測cpu利用率和內存使用情況,并記錄這些數據來建立內存使用趨勢模型,實現(xiàn)了對未來內存使用情況的預測,當cpu利用率超出設定閾值時,自動降低第一預設閾值,并根據內存使用趨勢調整第二預設閾值,實現(xiàn)了動態(tài)調整內存使用率閾值的功能,提高了內存管理的預見性和準確性,減少了因內存泄漏導致的系統(tǒng)不穩(wěn)定性和資源浪費,增強了系統(tǒng)的自適應能力,能夠更好地應對不同場景下的內存管理需求,降低了誤報率和漏報率。