欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于操作系統(tǒng)的內(nèi)存復(fù)用方法及裝置與流程

文檔序號:12469758閱讀:470來源:國知局
基于操作系統(tǒng)的內(nèi)存復(fù)用方法及裝置與流程

本發(fā)明涉及內(nèi)存管理技術(shù)領(lǐng)域,尤其涉及基于操作系統(tǒng)的內(nèi)存復(fù)用方法以及內(nèi)存復(fù)用裝置。



背景技術(shù):

在軟件開發(fā)領(lǐng)域,通常會使用高級語言如java或者C#,而這種語言本身具有內(nèi)存管理機制,完全是面向?qū)ο蟮?,用戶只需要使用new關(guān)鍵字來為對象分配內(nèi)存,并執(zhí)行對象的方法來調(diào)用一些模塊功能。而使用new關(guān)鍵字來分配的內(nèi)存是由操作系統(tǒng)來管理的。內(nèi)存在不需要的時候,回收也是由操作系統(tǒng)自動完成的。

而這種在運行過程中使用new關(guān)鍵字分配內(nèi)存,具有一定的不確定性,在某個時刻,可能分配不到內(nèi)存或者分配速度變慢。因為長期動態(tài)分配內(nèi)存可能會導(dǎo)致內(nèi)存碎片,在分配不到內(nèi)存時會引發(fā)碎片整理,從而使系統(tǒng)變慢。另外,對于某些應(yīng)用,運行所需的內(nèi)存是固定的,并且需要長達幾個月甚至幾年而不斷電。



技術(shù)實現(xiàn)要素:

因此,針對現(xiàn)有技術(shù)中內(nèi)存長期動態(tài)分配會導(dǎo)致內(nèi)存碎片且內(nèi)存碎片整理會引發(fā)系統(tǒng)變慢的問題以及操作系統(tǒng)釋放內(nèi)存不及時導(dǎo)致申請不到內(nèi)存而造成軟件掛掉的問題,本發(fā)明提出一種基于操作系統(tǒng)的內(nèi)存復(fù)用方法和一種基于操作系統(tǒng)的內(nèi)存復(fù)用裝置。

具體地,本發(fā)明實施例提出的一種基于操作系統(tǒng)的內(nèi)存復(fù)用方法,包括步驟:(i)創(chuàng)建目標類型的對象內(nèi)存池;(ii)使用new關(guān)鍵字創(chuàng)建所述目標類型的第一對象,將所述第一對象添加到所述對象內(nèi)存池并標記所述第一對象的狀態(tài)為已經(jīng)使用狀態(tài);(iii)當所述第一對象使用完后,將所述第一對象的狀態(tài)標記為空閑狀態(tài);(iv)當有新對象需要使用且所述新對象的類型為所述目標類型時,查找所述對象內(nèi)存池中是否有處于空閑狀態(tài)的對象,如果有則直接返回查找到的處于空閑狀態(tài)的對象,如果沒有則使用new關(guān)鍵字創(chuàng)建一個對象作為所述新對象并添加至所述對象內(nèi)存池。

在本發(fā)明的一個實施例中,所述基于操作系統(tǒng)的內(nèi)存復(fù)用方法在步驟(iii)之后還包括步驟:對所述第一對象進行計時以得到所述第一對象處于空閑狀態(tài)的時間長度;查詢計時得到的所述第一對象處于空閑狀態(tài)的所述時間長度;以及當所述時間長度大于所述對象內(nèi)存池設(shè)置的處于空閑狀態(tài)的對象的最大存放時間時,將所述第一對象從所述對象內(nèi)存池刪除。

在本發(fā)明的一個實施例中,所述基于操作系統(tǒng)的內(nèi)存復(fù)用方法還包括步驟:當所述對象內(nèi)存池使用完后,刪除所述對象內(nèi)存池。

在本發(fā)明的一個實施例中,所述內(nèi)存復(fù)用方法應(yīng)用于媒體播放,相應(yīng)地所述第一對象和所述新對象均為媒體播放對象。

在本發(fā)明的一個實施例中,所述目標類型選自文字、視頻、圖片和GIF動畫之一。

在本發(fā)明的一個實施例中,所述內(nèi)存復(fù)用方法由LED顯示屏異步控制卡的ARM處理器執(zhí)行。

此外,本發(fā)明實施例提出的一種基于操作系統(tǒng)的內(nèi)存復(fù)用裝置,包括:對象添加模塊,用于將使用new關(guān)鍵字創(chuàng)建的對象添加至對應(yīng)類型的對象內(nèi)存池;對象標記模塊,用于標記所述對象內(nèi)存池中的對象的狀態(tài)為已經(jīng)使用狀態(tài)或空閑狀態(tài),其中在所述對象被添加至所述對象內(nèi)存池時由所述對象標記模塊標記為已經(jīng)使用狀態(tài)、且在所述對象被使用完后由所述對象標記模塊標記為空閑狀態(tài);以及對象內(nèi)存池查找模塊,用于當有新的對應(yīng)類型對象需要使用時在所述對象內(nèi)存池中查找是否有處于空閑狀態(tài)的對象,如果有處于空閑狀態(tài)的對象則返回查找到的對象。

在本發(fā)明的一個實施例中,所述基于操作系統(tǒng)的內(nèi)存復(fù)用裝置還包括:空閑對象計時模塊,用于對標記為空閑狀態(tài)的對象進行計時以得到空閑時間長度;以及空閑對象監(jiān)控模塊,用于獲取所述對象內(nèi)存池中標記為空閑狀態(tài)的對象的所述空閑時間長度并當所述空閑時間長度超過所述對象內(nèi)存池存放標記為空閑狀態(tài)的對象的最長存放時間時刪除所述標記為空閑狀態(tài)的對象。

在本發(fā)明的一個實施例中,所述基于操作系統(tǒng)的內(nèi)存復(fù)用裝置還包括:對象內(nèi)存池刪除模塊,用于刪除已經(jīng)使用完的對象內(nèi)存池。

在本發(fā)明的一個實施例中,所述內(nèi)存復(fù)用裝置應(yīng)用于LED顯示屏異步控制卡。

由上可知,本發(fā)明實施例引入內(nèi)存池機制來維護交互頻繁的某些對象而不去實時動態(tài)使用new關(guān)鍵字來創(chuàng)建,因此能夠增強運行在操作系統(tǒng)例如Android或其他操作系統(tǒng)中的軟件穩(wěn)定性,軟件長期運行而不會變慢甚至死掉,大大減少了軟件運行變慢、掛掉的可能。

通過以下參考附圖的詳細說明,本發(fā)明的其它方面和特征變得明顯。但是應(yīng)當知道,該附圖僅僅為解釋的目的設(shè)計,而不是作為本發(fā)明的范圍的限定。還應(yīng)當知道,除非另外指出,不必要依比例繪制附圖,它們僅僅力圖概念地說明此處描述的結(jié)構(gòu)和流程。

附圖說明

下面將結(jié)合附圖,對本發(fā)明的具體實施方式進行詳細的說明。

圖1為相關(guān)于本發(fā)明實施例的內(nèi)存管理模型圖。

圖2為相關(guān)于本發(fā)明實施例的基于操作系統(tǒng)的內(nèi)存復(fù)用裝置的模塊示意圖。

具體實施方式

為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖對本發(fā)明的具體實施方式做詳細的說明。

本發(fā)明下述實施例是在帶有垃圾收集器的面向?qū)ο蟪绦蛟O(shè)計語言的基礎(chǔ)上對內(nèi)存交互頻繁的模塊進行內(nèi)存模塊復(fù)用的一種方法。如圖1所示:

(1)所有被對象池管理器管理的對象均需要繼承IPoolable接口(或稱之為內(nèi)存池管理接口),而此IPoolable接口是通過setFree()、setUsed()、IsFree()和getFreeDuration()四個方法函數(shù)來實現(xiàn);此四個方法函數(shù)分別是用于設(shè)置對象為空閑、設(shè)置對象為已經(jīng)使用、判斷對象是否空閑、以及獲取對象的空閑時間,其被對象內(nèi)存池所使用。

(2)對于每種類型的對象,為其準備一個裝載對象的內(nèi)存池例如對象內(nèi)存池1、對象內(nèi)存池2、對象內(nèi)存池3。每種對象內(nèi)存池只能裝載一種類型的對象,這里可以使用LinkedList雙向鏈表來保存對象。

(3)初始化一個對象內(nèi)存池(也即創(chuàng)建指定對象類型的對象內(nèi)存池),起初是沒有對象的。當用戶需要此種類型的對象時,可以使用new關(guān)鍵字來分配一個對象放入對象內(nèi)存池,并標記為已經(jīng)使用(used),例如對象內(nèi)存池1中的對象2、對象內(nèi)存池2中的對象2及對象3、對象內(nèi)存池3中的對象1及對象2均被標記為已經(jīng)使用。

(4)當對象被使用完成后,調(diào)用setFree()方法函數(shù)標記對象為空閑(free);例如對象內(nèi)存池1中的對象1、對象3及對象4,對象內(nèi)存池2中的對象1及對象4,對象內(nèi)存池3中的對象3及對象4均被標記為空閑。

(5)當有模塊需要獲取相同類型的對象的實例時,先在對應(yīng)類型的對象內(nèi)存池中尋找是否有空閑的對象,如果有則直接返回,沒有則使用new關(guān)鍵字分配一個對象并放入對象內(nèi)存池管理起來。

(6)每個對象內(nèi)存池均有一個設(shè)置空閑對象存放的最大存放時間。當某個對象的空閑時間大于此最大存放時間時,這個對象將被從此對象內(nèi)存池中刪除,并被釋放掉。

基于以上描述,可以將本實施例由軟件實現(xiàn)的內(nèi)存復(fù)用裝置20劃分為如圖2所示的包括對象添加模塊21、對象標記模塊23、對象內(nèi)存池查找模塊25、空閑對象計時模塊27、空閑對象監(jiān)控模塊29甚至是對象內(nèi)存池刪除模塊31。其中,對象添加模塊21用于添加對象到對應(yīng)類型的對象內(nèi)存池,其具體可以是利用new關(guān)鍵字創(chuàng)建并添加對象到新創(chuàng)建的對象內(nèi)存池中,也可以是利用new關(guān)鍵字創(chuàng)建并添加對象到已經(jīng)包含相同類型對象但無空閑對象的對象內(nèi)存池中。對象標記模塊23用于標記對象內(nèi)存池中的對象的狀態(tài)為空閑或已經(jīng)使用,例如當添加對象到對應(yīng)類型的對象內(nèi)存池時調(diào)用setUsed()方法函數(shù)標記添加的對象為已經(jīng)使用,當對象被使用完成后調(diào)用setFree()標記被使用完成的對象為空閑。對象內(nèi)存池查找模塊25用于查找對應(yīng)類型的對象內(nèi)存池中尋找是否有空閑的對象,其例如調(diào)用IsFree()方法函數(shù)來判斷對象內(nèi)存池中的各個對象是否為空閑??臻e對象計時模塊27用于對標記為空閑狀態(tài)的對象進行計時以得到空閑對象的空閑時間長度??臻e對象監(jiān)控模塊29用于監(jiān)控空閑對象的空閑時間長度且當其空閑時間長度超過其所在對象內(nèi)存池設(shè)置的空閑對象的最大存放時間時刪除此空閑對象,其具體可以是通過調(diào)用getFreeDuration()方法函數(shù)來獲取空閑對象的空閑時間長度。對象內(nèi)存池刪除模塊31用于刪除已經(jīng)使用完的對象內(nèi)存池,例如某個對象內(nèi)存池中已經(jīng)沒有已經(jīng)使用和空閑的對象或者某個對象內(nèi)存池不再需要,則將此對象內(nèi)存池刪除。

為便于進一步理解本發(fā)明實施例,下面列舉一個LED顯示屏異步控制卡(典型地例如ARM處理器和可編程邏輯器件等)進行媒體播放過程中的內(nèi)存復(fù)用方法,其例如由LED顯示屏異步控制卡的ARM處理器執(zhí)行并包括如下步驟:

(a)根據(jù)對象類型創(chuàng)建對應(yīng)類型的對象內(nèi)存池,例如:文字、視頻、圖片、GIF(Graphics Interchange Format,圖形交換格式)動畫等類型;

(b)根據(jù)功能需求創(chuàng)建不同類型的媒體播放對象例如A,將媒體播放對象A添加至對應(yīng)類型的對象內(nèi)存池并標記為已經(jīng)使用狀態(tài);此處媒體播放對象A例如是通過new關(guān)鍵字來創(chuàng)建;

(c)待外部模塊調(diào)用上述媒體播放對象A播放完媒體后,將媒體播放對象A標記為空閑狀態(tài),并對處于空閑狀態(tài)的媒體播放對象A開始計時;

(d)當有新的媒體播放對象需要使用時,根據(jù)對象類型在對應(yīng)的內(nèi)存池中尋找是否有空閑的媒體播放對象,如果有則直接返回,沒有則使用new關(guān)鍵字分配一個媒體播放對象并放入對象內(nèi)存池管理起來(例如標記為已經(jīng)使用狀態(tài))。此處,空閑的媒體播放對象是指被標記為空閑狀態(tài)但未達到最大存放時間的媒體播放對象。

綜上所述,本發(fā)明實施例提出的內(nèi)存復(fù)用方法及裝置引入了內(nèi)存池機制來維護交互頻繁的某些對象,因此能夠增強運行在操作系統(tǒng)例如Android或其他操作系統(tǒng)中的軟件穩(wěn)定性,軟件長期運行而不會變慢甚至死掉,大大減少了軟件運行變慢、掛掉的可能。

以上所述,僅是本發(fā)明的較佳實施例而已,并非對本發(fā)明作任何形式上的限制,雖然本發(fā)明已以較佳實施例揭露如上,然而并非用以限定本發(fā)明,任何熟悉本專業(yè)的技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍內(nèi),當可利用上述揭示的技術(shù)內(nèi)容作出些許更動或修飾為等同變化的等效實施例,但凡是未脫離本發(fā)明技術(shù)方案內(nèi)容,依據(jù)本發(fā)明的技術(shù)實質(zhì)對以上實施例所作的任何簡單修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
瓦房店市| 杭锦后旗| 新宾| 田阳县| 峨眉山市| 玉山县| 商城县| 巩留县| 平顺县| 罗甸县| 法库县| 崇州市| 六枝特区| 左贡县| 赫章县| 辰溪县| 景德镇市| 桐城市| 含山县| 修武县| 建水县| 太保市| 修文县| 合作市| 湟中县| 运城市| 诸城市| 洛川县| 扶风县| 常宁市| 垦利县| 昆明市| 景洪市| 仙居县| 建湖县| 广水市| 广南县| 柞水县| 民和| 东乌珠穆沁旗| 利津县|