亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種防止內(nèi)存泄漏的方法

文檔序號(hào):6472074閱讀:242來(lái)源:國(guó)知局
專利名稱:一種防止內(nèi)存泄漏的方法
技術(shù)領(lǐng)域
本發(fā)明屬于軟件技術(shù),具體涉及一種防止內(nèi)存泄漏的方法。
背景技術(shù)
現(xiàn)代計(jì)算機(jī)軟件技術(shù)中,經(jīng)常使用指針對(duì)內(nèi)存對(duì)象進(jìn)行引用,只有當(dāng)對(duì)象被引用 的指針計(jì)數(shù)為零的時(shí)候,該內(nèi)存對(duì)象才允許被銷(xiāo)毀,從而釋放其占用的內(nèi)存空間。上述方法 是通過(guò)計(jì)數(shù)來(lái)標(biāo)志一個(gè)內(nèi)存對(duì)象是否被其他方引用,常規(guī)的方法即被引用一次,則計(jì)數(shù)器 加l,不再引用則減l,當(dāng)引用計(jì)數(shù)為零的時(shí)候,該內(nèi)存對(duì)象才允許被銷(xiāo)毀。上述方法關(guān)鍵是 對(duì)該對(duì)象的引用必須成對(duì)登記,如果引用次數(shù)多于釋放次數(shù),則該對(duì)象的引用技術(shù)將一直 大于l,即一直不會(huì)被釋放,而如果引用次數(shù)少于釋放次數(shù),系統(tǒng)將試圖釋放已經(jīng)被釋放的 內(nèi)存對(duì)象,從而導(dǎo)致系統(tǒng)異常。 實(shí)際應(yīng)用系統(tǒng)中,對(duì)象的使用環(huán)境比較復(fù)雜(例如,同一個(gè)對(duì)象在多處被多個(gè)程 序使用過(guò),部分程序異常崩潰等),將造成上述的引用計(jì)數(shù)出現(xiàn)偏差,系統(tǒng)容錯(cuò)處理將直接 導(dǎo)致內(nèi)存對(duì)象不能銷(xiāo)毀,從而不能釋放其占用的內(nèi)存空間,則此對(duì)象就會(huì)成為內(nèi)存垃圾。當(dāng) 類似對(duì)象越來(lái)越多的產(chǎn)生時(shí),最后就可能會(huì)造成內(nèi)存泄漏,嚴(yán)重影響計(jì)算機(jī)的性能,甚至造 成死機(jī)。 中國(guó)專利02121418. 2提到"一種軟件內(nèi)存泄漏的檢查方法",該方法通過(guò)先確定
應(yīng)用程序申請(qǐng)的內(nèi)存塊,以及所申請(qǐng)的不同內(nèi)存塊被占用的時(shí)間,在應(yīng)用程序運(yùn)行時(shí),記錄
其申請(qǐng)內(nèi)存塊和釋放內(nèi)存塊的信息,最后確定超過(guò)占用時(shí)間尚未釋放的內(nèi)存塊,通過(guò)上述
內(nèi)存塊確定應(yīng)用程序的內(nèi)存泄漏點(diǎn)。中國(guó)專利申請(qǐng)200710074944. 3提到"一種檢測(cè)內(nèi)存泄
漏的方法",該方法通過(guò)首先建立動(dòng)態(tài)存儲(chǔ)內(nèi)存塊信息的鏈表,并設(shè)定同一申請(qǐng)位置長(zhǎng)生存
時(shí)間內(nèi)存塊數(shù)量閾值;其次,遍歷所述鏈表,檢查各鏈表元素存儲(chǔ)的內(nèi)存塊信息得到各內(nèi)存
塊的生存時(shí)間,將各長(zhǎng)生存時(shí)間內(nèi)存塊根據(jù)所述各長(zhǎng)生存時(shí)間內(nèi)存塊被申請(qǐng)的位置分類,
若同一申請(qǐng)位置上被申請(qǐng)的所述長(zhǎng)生存時(shí)間內(nèi)存塊數(shù)量大于所述同一申請(qǐng)位置長(zhǎng)生存時(shí)
間內(nèi)存塊數(shù)量閾值,則認(rèn)為所述各長(zhǎng)生存時(shí)間內(nèi)存塊發(fā)生了內(nèi)存泄漏。 上述兩個(gè)方法只是對(duì)判斷內(nèi)存是否泄漏的方法進(jìn)行了改進(jìn),而對(duì)于程序局部崩潰
這種異常情況,也不能解決內(nèi)存泄漏的問(wèn)題。 隨著網(wǎng)絡(luò)發(fā)展、程序遠(yuǎn)程調(diào)用越來(lái)越多,并且基于服務(wù)的程序越來(lái)越多,個(gè)別模塊 的崩潰不能影響系統(tǒng)整體的運(yùn)行,這樣就提出對(duì)內(nèi)存管理更好的方法,而內(nèi)存管理方面,不 僅是需要發(fā)現(xiàn)和定位內(nèi)存泄漏,更重要的是需要方便及時(shí)的解決上述應(yīng)用條件下的內(nèi)存泄 漏問(wèn)題。

發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明的目的是提供一種防止內(nèi)存泄漏的方法,該 方法通過(guò)創(chuàng)建代理訪問(wèn)對(duì)象,使用戶可以通過(guò)代理訪問(wèn)對(duì)象訪問(wèn)實(shí)際對(duì)象,能及時(shí)準(zhǔn)確地 釋放內(nèi)存,從而有效降低計(jì)算機(jī)內(nèi)存的泄漏。
為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采用的技術(shù)方案為一種防止內(nèi)存泄漏的方法,包 括如下步驟 (1)在創(chuàng)建實(shí)際對(duì)象的同時(shí),創(chuàng)建一個(gè)對(duì)應(yīng)的訪問(wèn)代理對(duì)象;
(2)用戶通過(guò)對(duì)應(yīng)的訪問(wèn)代理對(duì)象訪問(wèn)實(shí)際對(duì)象;
(3)程序結(jié)束后,釋放訪問(wèn)代理對(duì)象指向?qū)嶋H對(duì)象的指針;
(4)銷(xiāo)毀實(shí)際對(duì)象以釋放內(nèi)存空間。 進(jìn)一步,如上所述的防止內(nèi)存泄漏的方法,在步驟(1)中,創(chuàng)建的訪問(wèn)代理對(duì)象中 記錄的信息為實(shí)際對(duì)象在內(nèi)存中的地址。 進(jìn)一步,如上所述的防止內(nèi)存泄漏的方法,在步驟(2)中,用戶通過(guò)指針訪問(wèn)訪問(wèn) 代理對(duì)象,訪問(wèn)代理對(duì)象通過(guò)指針訪問(wèn)實(shí)際對(duì)象。 更進(jìn)一步,如上所述的防止內(nèi)存泄漏的方法,在步驟(2)中,多個(gè)用戶能夠通過(guò)多 個(gè)指針同時(shí)指向一個(gè)訪問(wèn)代理對(duì)象來(lái)引用對(duì)應(yīng)的實(shí)際對(duì)象。 進(jìn)一步,如上所述的防止內(nèi)存泄漏的方法,在步驟(3)中,當(dāng)訪問(wèn)代理對(duì)象指向?qū)?際對(duì)象的指針被釋放后,訪問(wèn)代理對(duì)象中記錄的信息為空地址,標(biāo)志該訪問(wèn)代理對(duì)象能夠 被重置或者等待被銷(xiāo)毀。 進(jìn)一步,如上所述的防止內(nèi)存泄漏的方法,在步驟(4)中,先銷(xiāo)毀訪問(wèn)代理對(duì)象, 繼而銷(xiāo)毀實(shí)際對(duì)象。 進(jìn)一步,如上所述的防止內(nèi)存泄漏的方法,在步驟(4)中,訪問(wèn)代理對(duì)象在系統(tǒng)運(yùn) 行時(shí)被統(tǒng)一 回收處理,或者被新對(duì)象重置換。 本發(fā)明的有益效果如下本發(fā)明通過(guò)創(chuàng)建與實(shí)際對(duì)象相對(duì)應(yīng)的訪問(wèn)代理對(duì)象,來(lái) 訪問(wèn)實(shí)際對(duì)象,這樣能夠在調(diào)用結(jié)束后通過(guò)釋放訪問(wèn)代理對(duì)象指向?qū)嶋H對(duì)象的指針,釋放 實(shí)際對(duì)象,從而減少內(nèi)存泄漏,而訪問(wèn)代理對(duì)象本身僅占用少量的內(nèi)存,即使不釋放訪問(wèn)代 理對(duì)象,也不會(huì)對(duì)計(jì)算機(jī)的性能構(gòu)成大的影響。


圖1是本發(fā)明所述方法的總體流程示意圖;
圖2是訪問(wèn)對(duì)象流程示意圖;
圖3是釋放對(duì)象流程示意圖。
具體實(shí)施例方式
下面結(jié)合說(shuō)明書(shū)附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步的描述。
如圖1所示,一種防止內(nèi)存泄漏的方法,包括如下步驟 (1)創(chuàng)建訪問(wèn)代理對(duì)象11 :在創(chuàng)建實(shí)際對(duì)象的同時(shí),創(chuàng)建一個(gè)對(duì)應(yīng)的訪問(wèn)代理對(duì) 象; (2)建立訪問(wèn)關(guān)系12 :通過(guò)對(duì)應(yīng)的訪問(wèn)代理對(duì)象訪問(wèn)實(shí)際對(duì)象; (3)釋放訪問(wèn)代理對(duì)象指針13 :釋放訪問(wèn)代理對(duì)象指向?qū)嶋H對(duì)象的指針; (4)釋放對(duì)象14 :銷(xiāo)毀實(shí)際對(duì)象以釋放內(nèi)存空間。 本實(shí)施例中,訪問(wèn)代理對(duì)象中存儲(chǔ)的信息為實(shí)際對(duì)象在內(nèi)存中的地址,用戶通過(guò) 指針訪問(wèn)訪問(wèn)代理對(duì)象,可以允許多個(gè)用戶同時(shí)指向訪問(wèn)代理對(duì)象,訪問(wèn)代理對(duì)象通過(guò)指針訪問(wèn)實(shí)際對(duì)象,實(shí)際對(duì)象中保存用戶所需要的數(shù)據(jù)信息。 本實(shí)施例中,在程序結(jié)束時(shí)需要銷(xiāo)毀實(shí)際對(duì)象,通過(guò)銷(xiāo)毀訪問(wèn)代理對(duì)象指向?qū)嶋H 對(duì)象的指針,釋放實(shí)際對(duì)象,從而釋放實(shí)際對(duì)象所占用的內(nèi)存空間。 本實(shí)施例中,如圖2所示,多個(gè)用戶21能夠通過(guò)訪問(wèn)代理對(duì)象22訪問(wèn)實(shí)際對(duì)象 23,訪問(wèn)代理對(duì)象中保存實(shí)際對(duì)象的內(nèi)存地址,訪問(wèn)代理對(duì)象通過(guò)指針指向?qū)嶋H對(duì)象,允許 多個(gè)用戶指向訪問(wèn)代理對(duì)象,只有訪問(wèn)代理對(duì)象可以訪問(wèn)實(shí)際對(duì)象,用戶通過(guò)上述指向關(guān) 系訪問(wèn)實(shí)際對(duì)象。 本實(shí)施例中,如圖3所示,當(dāng)程序調(diào)用完畢,需要釋放實(shí)際對(duì)象以釋放對(duì)應(yīng)的內(nèi)存 空間,多個(gè)用戶21通過(guò)指針指向代理訪問(wèn)對(duì)象,通過(guò)釋放訪問(wèn)代理對(duì)象22指向?qū)嶋H對(duì)象的 指針,釋放實(shí)際對(duì)象23,并釋放訪問(wèn)代理對(duì)象,繼而銷(xiāo)毀實(shí)際對(duì)象。由于很難控制訪問(wèn)代理 對(duì)象的指針能夠被正確及時(shí)的釋放掉,并且訪問(wèn)代理對(duì)象中存儲(chǔ)的信息為實(shí)際對(duì)象的內(nèi)存 地址,所占內(nèi)存較小,因此可以不釋放訪問(wèn)代理對(duì)象。 本實(shí)施例中,訪問(wèn)代理對(duì)象在系統(tǒng)運(yùn)行時(shí)可統(tǒng)一回收處理或者被新對(duì)象重置換, 當(dāng)訪問(wèn)代理對(duì)象指向?qū)嶋H對(duì)象的指針被釋放后,訪問(wèn)代理對(duì)象中記錄的信息為空地址,標(biāo) 志該訪問(wèn)對(duì)象可以被重置或等待銷(xiāo)毀。 考慮到在此公開(kāi)的對(duì)本發(fā)明的描述和特殊的實(shí)施例,本發(fā)明的其他實(shí)施例對(duì)于本 領(lǐng)域的技術(shù)人員來(lái)說(shuō)是顯而易見(jiàn)的。這些說(shuō)明和實(shí)施例僅作為例子來(lái)考慮,它們都屬于由 所附權(quán)利要求所指 的本發(fā)明的保護(hù)范圍和精神之內(nèi)。
權(quán)利要求
一種防止內(nèi)存泄漏的方法,包括如下步驟(1)在創(chuàng)建實(shí)際對(duì)象的同時(shí),創(chuàng)建一個(gè)對(duì)應(yīng)的訪問(wèn)代理對(duì)象;(2)用戶通過(guò)對(duì)應(yīng)的訪問(wèn)代理對(duì)象訪問(wèn)實(shí)際對(duì)象;(3)程序結(jié)束后,釋放訪問(wèn)代理對(duì)象指向?qū)嶋H對(duì)象的指針;(4)銷(xiāo)毀實(shí)際對(duì)象以釋放內(nèi)存空間。
2. 如權(quán)利要求l所述的防止內(nèi)存泄漏的方法,其特征在于在步驟(1)中,創(chuàng)建的訪問(wèn) 代理對(duì)象中記錄的信息為實(shí)際對(duì)象在內(nèi)存中的地址。
3. 如權(quán)利要求l所述的防止內(nèi)存泄漏的方法,其特征在于在步驟(2)中,用戶通過(guò)指 針訪問(wèn)訪問(wèn)代理對(duì)象,訪問(wèn)代理對(duì)象通過(guò)指針訪問(wèn)實(shí)際對(duì)象。
4. 如權(quán)利要求3所述的防止內(nèi)存泄漏的方法,其特征在于在步驟(2)中,多個(gè)用戶能 夠通過(guò)多個(gè)指針同時(shí)指向一個(gè)訪問(wèn)代理對(duì)象來(lái)引用對(duì)應(yīng)的實(shí)際對(duì)象。
5. 如權(quán)利要求l所述的防止內(nèi)存泄漏的方法,其特征在于在步驟(3)中,當(dāng)訪問(wèn)代理 對(duì)象指向?qū)嶋H對(duì)象的指針被釋放后,訪問(wèn)代理對(duì)象中記錄的信息為空地址,標(biāo)志該訪問(wèn)代 理對(duì)象能夠被重置或者等待被銷(xiāo)毀。
6. 如權(quán)利要求1或5所述的防止內(nèi)存泄漏的方法,其特征在于在步驟(4)中,先銷(xiāo)毀 訪問(wèn)代理對(duì)象,繼而銷(xiāo)毀實(shí)際對(duì)象。
7. 如權(quán)利要求1或5所述的防止內(nèi)存泄漏的方法,其特征在于在步驟(4)中,訪問(wèn)代理對(duì)象在系統(tǒng)運(yùn)行時(shí)被統(tǒng)一回收處理,或者被新對(duì)象重置換。
全文摘要
本發(fā)明涉及一種防止內(nèi)存泄漏的方法,屬于內(nèi)存管理軟件技術(shù)領(lǐng)域。該方法通過(guò)創(chuàng)建與實(shí)際對(duì)象相對(duì)應(yīng)的訪問(wèn)代理對(duì)象,來(lái)訪問(wèn)實(shí)際對(duì)象,這樣能夠在調(diào)用結(jié)束后通過(guò)釋放訪問(wèn)代理對(duì)象指向?qū)嶋H對(duì)象的指針,釋放實(shí)際對(duì)象,而訪問(wèn)代理對(duì)象本身僅占用少量的內(nèi)存,即使不釋放訪問(wèn)代理對(duì)象,也不會(huì)對(duì)計(jì)算機(jī)的性能構(gòu)成大的影響。本發(fā)明能及時(shí)準(zhǔn)確地釋放內(nèi)存,從而有效降低計(jì)算機(jī)內(nèi)存的泄漏。
文檔編號(hào)G06F9/50GK101770421SQ20081024662
公開(kāi)日2010年7月7日 申請(qǐng)日期2008年12月31日 優(yōu)先權(quán)日2008年12月31日
發(fā)明者李平立, 梁長(zhǎng)慶, 王會(huì)波, 龍武 申請(qǐng)人:北京大學(xué);方正國(guó)際軟件(北京)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1