[發(fā)明專利]一種監(jiān)控應用程序內存的方法、裝置及電子設備在審
| 申請?zhí)枺?/td> | 201610086611.1 | 申請日: | 2016-02-16 |
| 公開(公告)號: | CN107085548A | 公開(公告)日: | 2017-08-22 |
| 發(fā)明(設計)人: | 趙樹起 | 申請(專利權)人: | 阿里巴巴集團控股有限公司 |
| 主分類號: | G06F11/30 | 分類號: | G06F11/30 |
| 代理公司: | 北京市清華源律師事務所11441 | 代理人: | 沈泳,李贊堅 |
| 地址: | 英屬開曼群島大開*** | 國省代碼: | 暫無信息 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 監(jiān)控 應用程序 內存 方法 裝置 電子設備 | ||
技術領域
本申請涉及計算機技術領域,具體涉及一種監(jiān)控應用程序內存的方法以及一種監(jiān)控應用程序內存的裝置;本申請同時涉及一種電子設備。
背景技術
隨著現(xiàn)代系統(tǒng)規(guī)模日益擴大,系統(tǒng)中運行的應用程序數(shù)量顯著增加。這些應用程序通常都會消耗一定量的資源,比如內存。其中某些應用程序有可能會造成內存泄漏、對象double free以及訪問地址越界等,在計算機科學中,內存泄露是指由于疏忽或錯誤造成程序未能釋放已經(jīng)不再使用的內存的情況。內存泄露并非指內存在物理上的消失,而是應用程序分配某段內存后,由于設計錯誤,失去了對該段內存的控制,因而造成了內存的浪費;double free其實就是同一個指針釋放兩次,雖然一般把它叫做double free,其實只要是多次釋放一個指向堆內存的指針都有可能產生漏洞;訪問地址越界是向系統(tǒng)申請了一塊內存,在使用這塊內存的時候,超出了申請的范圍。造成的直接后果是修改了其它內存塊的內容,如果被修改的地址是正在使用中內存,會造成應用程序異常。
在應用程序開發(fā)的過程中,由于往往需要隨著業(yè)務流或控制流的處理而進行大量的內存申請和釋放,很容易造成在一些異常分支中遺漏釋放而出現(xiàn)內存泄露的情形,然而這種內存泄露的事件一般都是少量、且隱蔽的,需要經(jīng)過很長時間的積累甚至已經(jīng)造成了嚴重后果才能被察覺,難以檢測和恢復泄露的內存。
目前,雖然已經(jīng)有一些輔助工具可以協(xié)助進行內存泄漏、對象double free以及訪問地址越界的檢測。在現(xiàn)有技術下檢測內存的常用工具包括:valgrind、GLIBC的mtrace/muntrace功能以及tcmalloc。其中,valgrind的執(zhí)行不需要重新編譯,而是和應用程序在同一個進程中,動態(tài)的修改即將執(zhí)行的代碼,但正是因為valgrind的工作方式,導致程序性能驟降,根據(jù)注入代碼量的不同,性能會下降10-50倍,因為其對性能的影響,降低了其在復雜系統(tǒng)中的可用性;GLIBC的mtrace/muntrace功能利用malloc_hook機制,需要在記錄完成后重置malloc_hook函數(shù),所以其只能工作在單進程程序中,對于多進程程序因為 malloc_hook函數(shù)更改混亂會造成誤報或漏報,所以對于復雜的大型應用程序可用性不高;tcmalloc可以檢查程序中是否有內存泄露及內存泄露點信息以及內存性能及空間熱點分析,幫助分析內存的使用分布情況。但需要調用backtrace函數(shù)獲取調用棧信息,而這個操作是一個慢操作,所以tcmalloc使用采樣的方式降低對應用程序性能的影響,而采樣就可能存在偏差,從而影響結果的可靠性。
由此可見,在現(xiàn)有的監(jiān)控內存的方案下,由于誤報、漏報或者由于其插樁的實現(xiàn)方法或算法復雜性因素引起程序運行緩慢降低性能的問題,從而影響結果的可靠性,對于復雜的大型應用程序可用性不高,并且使用成本較高。
發(fā)明內容
本申請?zhí)峁┮环N監(jiān)控應用程序內存的方法以及一種監(jiān)控應用程序內存的裝置,以解決現(xiàn)有技術中的上述問題。本申請同時涉及一種電子設備。
本申請?zhí)峁┝艘环N監(jiān)控應用程序內存的方法,所述監(jiān)控應用程序內存的方法包括:
應用程序申請內存運行空間時,在內存中額外請求預設大小的內存監(jiān)控空間;
對申請的內存運行空間進行分配時,在額外請求的內存監(jiān)控空間中記錄本次內存分配信息;
對申請的內存運行空間進行釋放時,在額外請求的內存監(jiān)控空間中記錄本次內存釋放信息。
可選的,在所述應用程序申請內存運行空間時,在內存中額外請求預設大小的內存監(jiān)控空間的步驟之前,包括:
將預設的重載函數(shù)庫鏈接到應用程序中。
可選的,所述預設的重載函數(shù)庫,至少包括如下內存管理函數(shù):
內存分配函數(shù)、內存釋放函數(shù)以及內存調整函數(shù)。
可選的,所述將預設的重載函數(shù)庫鏈接到應用程序中,包括:
若所述應用程序是采用靜態(tài)鏈接的應用程序,則在編譯時將靜態(tài)鏈接庫鏈接進應用程序;
若所述應用程序是采用動態(tài)連接的應用程序,則在編譯時將動態(tài)鏈接庫鏈接進應用程序或者應用程序運行時,通過注入的方式把動態(tài)鏈接庫注入應用程序。
可選的,所述應用程序申請內存運行空間時,在內存中額外請求預設大小的內存監(jiān)控空間,包括:
應用程序調用所述預設的重載函數(shù)庫中的內存管理函數(shù)申請內存運行空間時,所述內存管理函數(shù)在內存中額外請求預設大小的內存監(jiān)控空間。
可選的,所述額外請求預設大小的內存監(jiān)控空間是:用于記錄內存信息的大小為16字節(jié)的標簽。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于阿里巴巴集團控股有限公司,未經(jīng)阿里巴巴集團控股有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610086611.1/2.html,轉載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:一種全自動造型機的新式接型機構
- 下一篇:一種全自動造型機的輪子機構





