国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

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

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


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