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

在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足的制作方法

文檔序號(hào):6519857閱讀:427來(lái)源:國(guó)知局
在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足的制作方法
【專利摘要】本發(fā)明涉及在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足。檢測(cè)相對(duì)于與應(yīng)用存儲(chǔ)器的存儲(chǔ)器堆相關(guān)聯(lián)的調(diào)整的堆最大大小的未使用空閑存儲(chǔ)器不足。調(diào)整的堆最大大小被設(shè)置為小于最大堆分配大小的堆大小。計(jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整的堆最大大小的增大量。將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量。
【專利說(shuō)明】在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及虛擬機(jī)工作集存儲(chǔ)器空間。更具體而言,本發(fā)明涉及在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足(out-of-memory )。
【背景技術(shù)】
[0002]虛擬機(jī)可以在硬件平臺(tái)上執(zhí)行,所述硬件平臺(tái)允許虛擬機(jī)就好像虛擬機(jī)是硬件計(jì)算設(shè)備一樣地執(zhí)行程序/進(jìn)程。硬件平臺(tái)可以允許多個(gè)單獨(dú)的虛擬機(jī)共存。每一個(gè)虛擬機(jī)都可以具有其自己的存儲(chǔ)器空間、操作系統(tǒng)實(shí)例、以及資源集,或可以共享某些資源。

【發(fā)明內(nèi)容】

[0003]一種方法包括:通過處理器,檢測(cè)相對(duì)于與應(yīng)用程序存儲(chǔ)器分配的存儲(chǔ)器堆(heap)相關(guān)聯(lián)的調(diào)整的堆最大大小的未使用空閑存儲(chǔ)器不足,其中,調(diào)整的堆最大大小被設(shè)置為小于最大堆分配大小的堆大??;計(jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整的堆最大大小的增大量;以及將所述調(diào)整的堆最大大小增大所述計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量。
[0004]一種系統(tǒng)包括存儲(chǔ)器以及被編程為執(zhí)行下列操作的處理器:檢測(cè)相對(duì)于與存儲(chǔ)器內(nèi)的應(yīng)用程序存儲(chǔ)器分配的存儲(chǔ)器堆相關(guān)聯(lián)的調(diào)整的堆最大大小的未使用空閑存儲(chǔ)器不足,其中,調(diào)整的堆最大大小被設(shè)置為小于最大堆分配大小的堆大小;計(jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整的堆最大大小的增大量;以及將所述調(diào)整的堆最大大小增大所述計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量。
[0005]一種計(jì)算機(jī)程序產(chǎn)品包括實(shí)現(xiàn)有計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,計(jì)算機(jī)可讀程序代碼當(dāng)在計(jì)算機(jī)上執(zhí)行時(shí)使計(jì)算機(jī):檢測(cè)相對(duì)于與應(yīng)用程序存儲(chǔ)器分配的存儲(chǔ)器堆相關(guān)聯(lián)的調(diào)整的堆最大大小的未使用空閑存儲(chǔ)器不足,其中,調(diào)整的堆最大大小被設(shè)置為小于最大堆分配大小的堆大?。挥?jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整的堆最大大小的增大量;以及將所述調(diào)整的堆最大大小增大所述計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量。
【專利附圖】

【附圖說(shuō)明】
[0006]圖1是根據(jù)本主題的一實(shí)施例的用于在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足的系統(tǒng)的實(shí)現(xiàn)的示例的框圖;
[0007]圖2是根據(jù)本主題的一實(shí)施例的在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中能夠執(zhí)行內(nèi)存不足避免的核處理模塊的實(shí)現(xiàn)的示例的框圖;
[0008]圖3是根據(jù)本主題的一實(shí)施例的用于在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足的消息流的實(shí)現(xiàn)的示例的消息流圖示;
[0009]圖4是根據(jù)本主題的一實(shí)施例的用于在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足的過程的實(shí)現(xiàn)的示例的流程圖;[0010]圖5A是根據(jù)本主題的一實(shí)施例的用于在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足的過程內(nèi)的初始處理的實(shí)現(xiàn)的示例的流程圖;以及
[0011]圖5B是根據(jù)本主題的一實(shí)施例的用于在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足的過程內(nèi)的另外的處理的實(shí)現(xiàn)的示例的流程圖。
【具體實(shí)施方式】
[0012]下面闡述的示例表示使本領(lǐng)域技術(shù)人員能實(shí)施本發(fā)明的必要信息,并示出了實(shí)施本發(fā)明的最佳模式。在參考附圖閱讀下面的描述之后,所屬領(lǐng)域的技術(shù)人員將理解本發(fā)明的概念,并將認(rèn)識(shí)到此處沒有特別闡明的這些概念的應(yīng)用。應(yīng)該理解,這些概念和應(yīng)用落在本公開和附帶的權(quán)利要求的范圍內(nèi)。
[0013]本文描述的主題提供在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足。本技術(shù)在虛擬機(jī)和垃圾回收器之間提供協(xié)作交互,以使虛擬機(jī)可以在不需要時(shí)使用較少的操作系統(tǒng)(OS)存儲(chǔ)器,而不會(huì)在需要更多存儲(chǔ)器時(shí)阻止虛擬機(jī)使用更多存儲(chǔ)器。為實(shí)現(xiàn)本技術(shù),添加了回調(diào)例程,當(dāng)內(nèi)存不足(out-of-memory, 00M)錯(cuò)誤即將發(fā)生或已經(jīng)發(fā)生時(shí),由垃圾回收器(GC)觸發(fā)該回調(diào)例程?;卣{(diào)例程可以通過內(nèi)存不足處理程序進(jìn)程/模塊來(lái)實(shí)現(xiàn)。響應(yīng)于判斷內(nèi)存不足(OOM)狀況即將發(fā)生(或已經(jīng)發(fā)生),垃圾回收器調(diào)用回調(diào)例程,表示OOM狀況即將來(lái)臨。當(dāng)回調(diào)例程被調(diào)用時(shí),確定使應(yīng)用程序繼續(xù)運(yùn)行所需的存儲(chǔ)器的量??梢詧?zhí)行處理以確定修改工作集的最大大小所需的增大的存儲(chǔ)器的量(增大的工作集大小調(diào)整)?;卣{(diào)例程的調(diào)用可以可任選地包括分配所需的存儲(chǔ)器的量,可以通過對(duì)回調(diào)本身的分析來(lái)執(zhí)行工作集的確定的增大的大小調(diào)整。通過回調(diào)內(nèi)存不足處理程序,添加可用存儲(chǔ)器,用于應(yīng)用程序執(zhí)行。取決于用來(lái)調(diào)整可用堆存儲(chǔ)器的技術(shù),回調(diào)的內(nèi)存不足處理程序?qū)⒄{(diào)整的最大大小向上移動(dòng)確定的量,或者給消耗堆空間的氣球放氣達(dá)確定的量,以增加可用存儲(chǔ)器供應(yīng)用程序執(zhí)行。然后,回調(diào)的內(nèi)存不足處理程序被允許請(qǐng)求重試存儲(chǔ)器分配??梢允褂没卣{(diào)例程的返回值來(lái)允許處理回調(diào)的進(jìn)程請(qǐng)求GC響應(yīng)于對(duì)虛擬機(jī)的分配的最大存儲(chǔ)器的調(diào)整而重試分配嘗試。如此,在對(duì)可用于虛擬機(jī)分配給應(yīng)用程序的堆存儲(chǔ)器的動(dòng)態(tài)調(diào)整的上下文中,可以避免內(nèi)存不足狀況。
[0014]本技術(shù)修改虛擬機(jī)以提供在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足狀況的確定性和實(shí)時(shí)動(dòng)態(tài)處理能力。使用本技術(shù),更新虛擬機(jī),以便系統(tǒng)處理肯定地知道調(diào)整的最大值何時(shí)將導(dǎo)致OOM狀況,肯定地知道滿足分配需要多少存儲(chǔ)器以便將調(diào)整的最大值增大最佳量,并且在完成工作集大小調(diào)整之后允許重試嘗試的分配。
[0015]可以執(zhí)行另外的處理以檢測(cè)GC壓力以及改變調(diào)整的最大值以減輕此壓力。例如,即使GC使用的調(diào)整的最大值不導(dǎo)致OOM狀況,它可能在GC上導(dǎo)致壓力,該壓力導(dǎo)致虛擬機(jī)以比別的方式可能的效率更低的效率操作。對(duì)本技術(shù)的擴(kuò)展允許GC提供表示GC “處于壓力下”的第二回調(diào),此處定義為必須努力工作并消耗資源,因?yàn)榭捎玫亩汛鎯?chǔ)器低。再次,取決于用來(lái)調(diào)整可用堆存儲(chǔ)器的技術(shù),此第二回調(diào)的內(nèi)存不足處理程序可以向上修改調(diào)整的最大值,或者給消耗堆存儲(chǔ)器的氣球放氣達(dá)合適的量,以減輕壓力。如此,可以通過使用此第二回調(diào)來(lái)進(jìn)一步提高效率。
[0016]出于本說(shuō)明的目的,短語(yǔ)“工作集”是指對(duì)于虛擬機(jī)或進(jìn)程可用的存儲(chǔ)器資源,具體來(lái)說(shuō),是指進(jìn)程實(shí)際消耗的存儲(chǔ)器。例如,如果一個(gè)存儲(chǔ)器頁(yè)面最近沒有被使用,操作系統(tǒng)(OS)可以將該存儲(chǔ)器頁(yè)面的內(nèi)容寫入到磁盤。盡管這樣的存儲(chǔ)器頁(yè)面在進(jìn)程的虛擬地址空間內(nèi),將此存儲(chǔ)器頁(yè)面存儲(chǔ)到磁盤不再消耗當(dāng)前存儲(chǔ)器空間內(nèi)的物理存儲(chǔ)器,如此,將不能被視為工作集的一部分。相比之下,最近已經(jīng)被接觸/訪問的并已經(jīng)加載到存儲(chǔ)器中的存儲(chǔ)器頁(yè)面被視為進(jìn)程的工作集的一部分。
[0017]應(yīng)該注意,本主題的概念是由與虛擬機(jī)工作集相關(guān)聯(lián)的某些限制的認(rèn)識(shí)產(chǎn)生的。例如,觀察到,諸如Java?虛擬機(jī)(JVM?)的傳統(tǒng)虛擬機(jī)允許堆隨著存儲(chǔ)器需求增大而擴(kuò)展和增長(zhǎng)。還觀察到,此形式的存儲(chǔ)器消耗的結(jié)果是,隨著時(shí)間的推移,為虛擬機(jī)中的對(duì)象堆分配的操作系統(tǒng)(OS)存儲(chǔ)器趨向于當(dāng)虛擬機(jī)啟動(dòng)時(shí)允許的最大值,盡管虛擬機(jī)可能只對(duì)于定義的時(shí)間間隔(例如,在上午9:00-10:00之間,當(dāng)用戶傳統(tǒng)上登錄到特定應(yīng)用程序時(shí))需要最大值。結(jié)果,確定了常規(guī)虛擬機(jī)的這樣的行為防止對(duì)于Java?編程語(yǔ)言應(yīng)用程序的存儲(chǔ)器過度提供,因?yàn)楫?dāng)不再需要時(shí)過度提供的存儲(chǔ)器將不能為其他用途而釋放。另外還觀察到,嚴(yán)重虛擬化的計(jì)算環(huán)境(諸如云計(jì)算環(huán)境)被設(shè)計(jì)成通過最大化可以每硬件單元運(yùn)行的應(yīng)用程序的密度來(lái)實(shí)現(xiàn)成本節(jié)省,這樣的處理通過消除空閑的機(jī)器來(lái)提高硬件的利用率和能效。然而,另外還觀察到,常規(guī)虛擬機(jī)不被配置成識(shí)別和利用這些虛擬化環(huán)境。例如,確定了由于虛擬化的環(huán)境基于并非所有的訪客都將同時(shí)需要它們的最大資源分配的知識(shí),使用過度提供,將資源消耗到它們的最大潛在分配的常規(guī)虛擬機(jī)不適于虛擬化的環(huán)境。如此,確定了為了最大化高度虛擬化的環(huán)境中的應(yīng)用程序密度,必須重新設(shè)計(jì)虛擬機(jī),以減少消耗的資源占用空間。進(jìn)一步確定,虛擬機(jī)必須被重新配置適應(yīng)于改變的資源分配,以跨多個(gè)虛擬機(jī)實(shí)例來(lái)共享更多資源,并且利用系統(tǒng)管理程序(hypervisor)特定的功能,諸如快速的訪客-訪客網(wǎng)絡(luò)結(jié)構(gòu)。
[0018]另外還觀察到,盡管嘗試了用于收縮堆大小的某些解決方案,諸如向下可調(diào)節(jié)的存儲(chǔ)器最大值或消耗堆的可充氣氣球,如果虛擬機(jī)的收縮的可用存儲(chǔ)器大小設(shè)置得太低,這些解決方案仍可能會(huì)導(dǎo)致內(nèi)存不足(00M)狀況。例如,確定了,如果應(yīng)用程序需要比已經(jīng)設(shè)置的調(diào)整的最大值更多的存儲(chǔ)器,則將垃圾回收(GC)使用的最大存儲(chǔ)器設(shè)置為小于原始最大值可能會(huì)導(dǎo)致OOM錯(cuò)誤。如此,另外還確定了,還需要避免OOM狀況并從將可用存儲(chǔ)器大小收縮到太低的級(jí)別恢復(fù)的解決方案。本主題通過在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中提供內(nèi)存不足避免,改善虛擬機(jī)存儲(chǔ)器可用性調(diào)整,如上文和下面更詳細(xì)地描述的。使用本技術(shù),虛擬機(jī)可以與垃圾回收器和存儲(chǔ)器收縮管理組件協(xié)調(diào)以識(shí)別即將來(lái)臨的OOM狀況,并且在發(fā)生實(shí)際OOM狀況之前可以倒轉(zhuǎn)先前的存儲(chǔ)器收縮。如此,可以通過在本文所描述的動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中使用內(nèi)存不足避免,獲得改善的虛擬存儲(chǔ)器工作集調(diào)整。
[0019]盡管本描述為本文所描述的示例的目的使用上文所描述的回調(diào)實(shí)現(xiàn),但是,存在用于動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中的內(nèi)存不足避免的另外的替代方案。這些替代方案包括,例如,當(dāng)在一個(gè)操作系統(tǒng)(OS)中運(yùn)行多個(gè)虛擬機(jī)時(shí),或當(dāng)在虛擬化環(huán)境中的多個(gè)訪客中運(yùn)行多個(gè)虛擬機(jī)時(shí),避免Java?編程語(yǔ)言應(yīng)用程序的存儲(chǔ)器過度交托(commit)。利用此實(shí)現(xiàn),可以考慮過度交托避免而提供更多總的存儲(chǔ)器。作為另一個(gè)替代方案,可以使用堆使用監(jiān)測(cè)和啟發(fā)式法來(lái)確定何時(shí)將可用堆從減少級(jí)別往回向當(dāng)給定應(yīng)用程序啟動(dòng)時(shí)最初提供的最大工作集調(diào)整。一個(gè)可能的監(jiān)測(cè)實(shí)現(xiàn)可以包括判斷堆所使用的存儲(chǔ)器是否正在增長(zhǎng),盡管堆已經(jīng)在新設(shè)置的調(diào)整的最大值之上(在調(diào)整的最大值可以被設(shè)置為小于當(dāng)前堆大小的級(jí)別的情況下,將是這樣)。另一個(gè)可能的監(jiān)測(cè)實(shí)現(xiàn)包括判斷當(dāng)在堆中幾乎沒有空閑空間時(shí)是否有繁重的垃圾回收(GC)活動(dòng)。此技術(shù)可以使用關(guān)于是否有涉及即將來(lái)臨的OOM狀況的問題的概率,可以使用額外的時(shí)間來(lái)識(shí)別是否有實(shí)際OOM問題。如此,在這樣的情況下,可能仍會(huì)發(fā)生OOM狀況。另外,這樣的實(shí)現(xiàn)可以通過提供可用的堆大小的次最佳的調(diào)整,而更保守。如此,本文所描述的示例使用上文所描述的回調(diào)實(shí)現(xiàn),在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中提供高效且有效的實(shí)時(shí)內(nèi)存不足避免。然而,應(yīng)該理解,對(duì)于給定實(shí)現(xiàn),視情況而定,此處的描述可以被修改或與上文所描述的替代方案相結(jié)合。
[0020]本文所描述的動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中的內(nèi)存不足避免可以實(shí)時(shí)地執(zhí)行,以允許對(duì)虛擬機(jī)的動(dòng)態(tài)工作集大小迅速調(diào)整,同時(shí)避免OOM狀況。出于本描述的目的,實(shí)時(shí)應(yīng)該包括充分短的時(shí)長(zhǎng)的任何時(shí)間幀,以便提供所描述的主題的用戶可以接受的用于信息處理的合理響應(yīng)時(shí)間。另外,術(shù)語(yǔ)“實(shí)時(shí)”還將包括常常被稱為“近乎實(shí)時(shí)”的東西——一般是指充分短的時(shí)長(zhǎng)的任何時(shí)間幀,以便提供所描述的主題的用戶可以接受的用于按需信息處理的合理響應(yīng)時(shí)間(例如,在一秒的部分內(nèi)或在幾秒內(nèi))。這些術(shù)語(yǔ),盡管難以準(zhǔn)確地定義,但很好地被所屬領(lǐng)域的技術(shù)人員理解。
[0021]圖1是用于在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足的系統(tǒng)100的實(shí)現(xiàn)的示例的框圖。計(jì)算設(shè)備_1 102到計(jì)算設(shè)備_N 104通過網(wǎng)絡(luò)106與多個(gè)其他設(shè)備進(jìn)行通信。其他設(shè)備包括服務(wù)器_1 108到服務(wù)器_11 110。
[0022]如下文與圖2到圖5B相關(guān)聯(lián)地更詳細(xì)地描述的,計(jì)算設(shè)備_1102到計(jì)算設(shè)備_N104和服務(wù)器_1 108到服務(wù)器_11 110可以各自在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中提供自動(dòng)的內(nèi)存不足避免。動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中的自動(dòng)的內(nèi)存不足避免基于對(duì)即將來(lái)臨的潛在OOM狀況的編程識(shí)別以及增大工作集內(nèi)的可用存儲(chǔ)器的干預(yù)以避免OOM狀況。如上文所描述的,存在本主題的實(shí)現(xiàn)的各種可能性,而所有這樣的可能性都被視為在本主題的范圍內(nèi)。
[0023]應(yīng)該注意,與圖1相關(guān)聯(lián)地描述的相應(yīng)計(jì)算設(shè)備中的任何一個(gè)可以是便攜式計(jì)算設(shè)備,要么通過用戶的將相應(yīng)計(jì)算設(shè)備移動(dòng)到不同的位置的能力,要么通過相應(yīng)計(jì)算設(shè)備的與便攜式平臺(tái)(諸如飛機(jī)、火車、汽車,或其他移動(dòng)交通工具)的關(guān)聯(lián)。還應(yīng)注意,相應(yīng)的計(jì)算設(shè)備可以是如上文和下面更詳細(xì)地描述的能夠處理信息的任何計(jì)算設(shè)備。例如,相應(yīng)的計(jì)算設(shè)備可以包括諸如個(gè)人計(jì)算機(jī)(例如,臺(tái)式機(jī)、膝上型計(jì)算機(jī)等)或手持式設(shè)備(例如,蜂窩電話、個(gè)人數(shù)字助理(PDA)、電子郵件設(shè)備、音樂錄制或播放設(shè)備、平板計(jì)算設(shè)備、電子書閱讀設(shè)備等)、web服務(wù)器、應(yīng)用服務(wù)器,或其他數(shù)據(jù)服務(wù)器設(shè)備的設(shè)備,或如上文和下面更詳細(xì)地描述的能夠處理信息的任何其他設(shè)備。
[0024]網(wǎng)絡(luò)106可以包括適于預(yù)計(jì)的用途的任何形式的互連,包括專用或公共網(wǎng)絡(luò),諸如內(nèi)聯(lián)網(wǎng)或因特網(wǎng)、直接模塊間互連、撥號(hào)、無(wú)線、或能夠互連相應(yīng)的設(shè)備的任何其他互連機(jī)制。
[0025]服務(wù)器_1 108到服務(wù)器_11 110可以包括能夠通過諸如網(wǎng)絡(luò)106的網(wǎng)絡(luò)提供供諸如計(jì)算設(shè)備_1 102到計(jì)算設(shè)備_N 104的設(shè)備消耗的數(shù)據(jù)的任何設(shè)備。如此,服務(wù)器_1108到服務(wù)器_11 110可以各自包括web服務(wù)器、應(yīng)用服務(wù)器、或其他數(shù)據(jù)服務(wù)器設(shè)備。
[0026]圖2是在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中能夠執(zhí)行內(nèi)存不足避免的核處理模塊200的實(shí)現(xiàn)的示例的框圖。對(duì)于給定實(shí)現(xiàn),視情況而定,核處理模塊200可以與計(jì)算設(shè)備_1 102到計(jì)算設(shè)|_N 104或者與服務(wù)器_1108到服務(wù)器_11 110相關(guān)聯(lián)。如此,此處一般性地描述了核處理模塊200,但是應(yīng)該理解,核處理模塊200內(nèi)的組件的實(shí)現(xiàn)的許多變形是可以的,所有這樣的變形都在本主題的范圍內(nèi)。
[0027]此外,核處理模塊200可以提供與每一個(gè)實(shí)現(xiàn)相關(guān)聯(lián)的不同的和互補(bǔ)的處理。如此,對(duì)于下面的示例中的任何一個(gè),應(yīng)該理解,參考結(jié)合另一設(shè)備描述的任何一個(gè)設(shè)備所描述的功能的任何一方面(例如,發(fā)送等)要被理解為同時(shí)描述該另一相應(yīng)的設(shè)備的功能(例如,接收等)。
[0028]中央處理單元(CPU) 202提供計(jì)算機(jī)指令執(zhí)行、計(jì)算,及核處理模塊200內(nèi)的其他能力。顯示器204向核處理模塊200的用戶提供可視信息,輸入設(shè)備206為用戶提供了輸入能力。
[0029]顯示器204可以包括任何顯示設(shè)備,諸如陰極射線管(CRT)、液晶顯示器(IXD)、發(fā)光二極管(LED)、電子墨水顯示器、投影、觸摸屏,或其他顯示元件或面板。輸入設(shè)備206可以包括計(jì)算機(jī)鍵盤、小鍵盤、鼠標(biāo)、筆、游戲桿、觸摸屏,或用戶可以用來(lái)與顯示器204交互并對(duì)顯示器204上的信息作出響應(yīng)的任何其他類型的輸入設(shè)備。
[0030]應(yīng)該注意,顯示器204和輸入設(shè)備206對(duì)于某些實(shí)現(xiàn)/設(shè)備,可以是核處理模塊200的可選組件。相應(yīng)地,核處理模塊200可以作為完全自動(dòng)的嵌入設(shè)備來(lái)操作,沒有直接用戶可配置性或反饋。然而,核處理模塊200還可對(duì)于給定實(shí)現(xiàn),視情況分別通過顯示器204和輸入設(shè)備206來(lái)提供用戶反饋和可配置性。
[0031]通信模塊208提供使核處理模塊200可與系統(tǒng)100內(nèi)的其他模塊進(jìn)行通信的互連能力。對(duì)于給定實(shí)現(xiàn),通信模塊208可以包括可用來(lái)提供適合的互連能力的任何電的、協(xié)議的以及協(xié)議轉(zhuǎn)換能力。
[0032]存儲(chǔ)器210包括虛擬機(jī)執(zhí)行區(qū)域212,該區(qū)域212在核處理模塊200內(nèi)提供虛擬機(jī)實(shí)例化和處理空間。如下面更詳細(xì)地描述的,在虛擬機(jī)執(zhí)行區(qū)域212內(nèi)執(zhí)行的多個(gè)虛擬機(jī)可以在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中獨(dú)立地或彼此結(jié)合地管理(或可以被管理以提供)內(nèi)存不足避免。此外,對(duì)于給定實(shí)現(xiàn),適當(dāng)?shù)兀鄠€(gè)虛擬機(jī)可以在虛擬機(jī)執(zhí)行區(qū)域212內(nèi)實(shí)例化。
[0033]應(yīng)該理解,虛擬機(jī)可以以各種方式來(lái)配置。例如,虛擬機(jī)可以包括分配了應(yīng)用對(duì)象的堆區(qū)域、應(yīng)用執(zhí)行空間、以及垃圾回收器。虛擬機(jī)還可包括其自己的操作系統(tǒng)(OS)實(shí)例,或者多個(gè)虛擬機(jī)可以共享一個(gè)OS實(shí)例。存在對(duì)于虛擬機(jī)實(shí)現(xiàn)的其他變形,而所有這樣的變形都被視為在本主題的范圍內(nèi)。
[0034]存儲(chǔ)器210還包括內(nèi)存不足避免模塊214。內(nèi)存不足避免模塊214在本文所描述的動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中結(jié)合一個(gè)或多個(gè)執(zhí)行中的虛擬機(jī),來(lái)執(zhí)行內(nèi)存不足避免。內(nèi)存不足避免模塊214作為存儲(chǔ)器收縮管理組件來(lái)操作,來(lái)調(diào)整堆最大大小,并執(zhí)行其他處理,如上文以及下面更詳細(xì)地描述的。為便于說(shuō)明,與虛擬機(jī)執(zhí)行區(qū)域212分開地示出了內(nèi)存不足避免模塊214。然而,應(yīng)該注意,對(duì)于給定實(shí)現(xiàn),視情況,內(nèi)存不足避免模塊214可以在虛擬機(jī)執(zhí)行區(qū)域212內(nèi)實(shí)現(xiàn),并可以在執(zhí)行中的虛擬機(jī)內(nèi)實(shí)現(xiàn)。
[0035]還應(yīng)注意,在對(duì)于給定實(shí)現(xiàn)適合的情況下,諸如在多個(gè)訪客環(huán)境內(nèi),內(nèi)存不足避免模塊214可以與工作負(fù)荷管理器類型的組件相關(guān)聯(lián)地實(shí)現(xiàn)。可另選地,內(nèi)存不足避免模塊214可以作為系統(tǒng)管理程序平臺(tái)的一部分來(lái)實(shí)現(xiàn)。在任何這樣的實(shí)現(xiàn)內(nèi),可以修改存儲(chǔ)器分配策略,以使內(nèi)存不足避免模塊214可以知道/識(shí)別全部存儲(chǔ)器和向所有實(shí)例化的虛擬機(jī)的分配。內(nèi)存不足避免模塊214可以分析并評(píng)估每一主機(jī)虛擬機(jī)中的空閑存儲(chǔ)器,以判斷任何訪客是否正在使用太多存儲(chǔ)器。[0036]響應(yīng)于判斷任何訪客正在使用太多存儲(chǔ)器或在任何虛擬機(jī)內(nèi)存在空閑存儲(chǔ)器,內(nèi)存不足避免模塊214可以請(qǐng)求任何這樣的訪客內(nèi)部的虛擬機(jī)收縮已分配的存儲(chǔ)器或增大已分配的存儲(chǔ)器(按照每個(gè)訪客判定)。作為另一種替代方案,內(nèi)存不足避免模塊214如果在每一訪客內(nèi)實(shí)現(xiàn),則可以判斷它具有空閑存儲(chǔ)器并收縮其自己的調(diào)整的最大值級(jí)別。這樣的處理可以導(dǎo)致系統(tǒng)管理程序進(jìn)一步識(shí)別空閑存儲(chǔ)器,并進(jìn)一步減少向個(gè)體訪客的存儲(chǔ)器分配。
[0037]對(duì)于任何這樣的實(shí)現(xiàn),在內(nèi)存不足避免模塊214檢測(cè)到潛在OOM狀況的情況下,再次通過增大調(diào)整的最大值或者給氣球放氣,可以執(zhí)行處理以增大向相應(yīng)的虛擬機(jī)分配的堆存儲(chǔ)器。內(nèi)存不足避免模塊214還可以識(shí)別一個(gè)或多個(gè)虛擬機(jī)上的存儲(chǔ)器“壓力”。可另選地,專用或共享操作系統(tǒng)實(shí)例可以檢測(cè)虛擬機(jī)上的存儲(chǔ)器壓力,并與內(nèi)存不足避免模塊214協(xié)調(diào)以作出響應(yīng)并動(dòng)態(tài)地調(diào)整一個(gè)或多個(gè)虛擬機(jī)的分配的堆存儲(chǔ)器,以避免即將來(lái)臨的OOM狀況。
[0038]此外,在實(shí)現(xiàn)多個(gè)虛擬機(jī)的情況下,物理存儲(chǔ)器限制分配給每一虛擬機(jī)的堆大小。在這樣的實(shí)現(xiàn)中,可以執(zhí)行協(xié)作存儲(chǔ)器減少管理。在某些實(shí)現(xiàn)下,虛擬機(jī)可以被配置成直接與在每一虛擬機(jī)內(nèi)實(shí)現(xiàn)的內(nèi)存不足避免模塊214進(jìn)行通信,以實(shí)現(xiàn)協(xié)作存儲(chǔ)器減少管理。每一虛擬機(jī)可以實(shí)時(shí)地調(diào)整其調(diào)整的最大堆使用量,以釋放空閑資源供其他虛擬機(jī)使用,并避免即將來(lái)臨的OOM狀況。然而,應(yīng)該注意,對(duì)于虛擬機(jī)內(nèi)的內(nèi)存不足避免模塊214直接通信沒有要求,只要有某種機(jī)制獲取關(guān)于多虛擬機(jī)環(huán)境的虛擬機(jī)內(nèi)的存儲(chǔ)器消耗的信息即可。如此,存在對(duì)于本技術(shù)的實(shí)現(xiàn)的各種可能性,而所有這樣的可能性都被視為在本技術(shù)的范圍內(nèi)。
[0039]應(yīng)該理解,為便于說(shuō)明,視情況而定,存儲(chǔ)器210可以包括適于預(yù)計(jì)的用途的分布式的或局部的易失性和非易失性存儲(chǔ)器的任何組合,并可以包括本示例內(nèi)未示出的其他存儲(chǔ)器段。例如,在不偏離本主題的范圍的情況下,存儲(chǔ)器210可以包括代碼存儲(chǔ)區(qū)域、操作系統(tǒng)存儲(chǔ)區(qū)域、代碼執(zhí)行區(qū)域以及數(shù)據(jù)區(qū)域。
[0040]應(yīng)該注意,在不偏離本主題的范圍的情況下,內(nèi)存不足避免模塊214可以形成所描述的其他電路的一部分。此外,內(nèi)存不足避免模塊214可以包括由CPU202執(zhí)行的用于執(zhí)行本文所描述的功能的指令。CPU202可以執(zhí)行這些指令以為核處理模塊200提供上文所描述的并且下面更詳細(xì)地描述的處理能力。在不偏離本主題的范圍的情況下,內(nèi)存不足避免模塊214可以構(gòu)成中斷服務(wù)例程(ISR)的一部分、操作系統(tǒng)的一部分、瀏覽器應(yīng)用的一部分,或單獨(dú)的應(yīng)用的一部分。還應(yīng)該注意,對(duì)于給定實(shí)現(xiàn),視情況,內(nèi)存不足避免模塊214可以實(shí)現(xiàn)為單獨(dú)的硬件組件。
[0041]CPU202、顯示器204、輸入設(shè)備206、通信模塊208以及存儲(chǔ)器210通過互連216互連在一起?;ミB216可以包括系統(tǒng)總線、網(wǎng)絡(luò),或任何其他能夠給相應(yīng)的組件提供用于相應(yīng)的目的的合適的互連的互連。
[0042]盡管圖2內(nèi)所示出的不同的模塊為便于說(shuō)明和描述的目的被示為組件級(jí)別的模塊,但是應(yīng)該注意,這些模塊可以包括用來(lái)實(shí)現(xiàn)如上文以及下面更詳細(xì)地描述的相應(yīng)的模塊的功能的任何硬件、編程的處理器以及存儲(chǔ)器。例如,所述模塊可以包括專用集成電路(ASIC)形式的另外的控制器電路、處理器、天線,和/或用于執(zhí)行與相應(yīng)的模塊相關(guān)聯(lián)的通信和電力控制活動(dòng)的離散的集成電路和組件。另外,視情況而定,所述模塊可以包括中斷級(jí)別的、棧級(jí)別的以及應(yīng)用級(jí)別的模塊。此外,所述模塊可以包括用于存儲(chǔ)、執(zhí)行,以及用于執(zhí)行與相應(yīng)的模塊相關(guān)聯(lián)的處理活動(dòng)的數(shù)據(jù)處理的任何存儲(chǔ)器組件。在不偏離本主題的范圍的情況下,所述模塊還可構(gòu)成所描述的其他電路的一部分,或者可以組合起來(lái)。
[0043]另外,盡管核處理模塊200被示為具有某些所描述的組件,但是,在不偏離本主題的范圍的情況下,其他模塊和組件可以與核處理模塊200相關(guān)聯(lián)。另外,應(yīng)該注意,盡管為便于說(shuō)明,核處理模塊200被描述為單個(gè)設(shè)備,但是在不偏離本主題的范圍的情況下,核處理模塊200內(nèi)的組件可以是位于一起的,或分布式的并通過網(wǎng)絡(luò)互連的。對(duì)于分布式布置,顯示器204和輸入設(shè)備206可以位于銷售點(diǎn)設(shè)備、電子信息亭處,或其他位置,而CPU202和存儲(chǔ)器210可以位于本地或遠(yuǎn)程服務(wù)器。核處理模塊200的組件的許多其他可能的布置都是可以的,所有都視為在本主題的范圍內(nèi)。相應(yīng)地,核處理模塊200可以采取許多形式,并可以與許多平臺(tái)相關(guān)聯(lián)。
[0044]圖3是用于在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足的消息流300的實(shí)現(xiàn)的示例的消息流圖示。垃圾回收器302與上文所描述的內(nèi)存不足避免模塊214—起示出。垃圾回收器302代表與存儲(chǔ)器210的虛擬機(jī)執(zhí)行區(qū)域212內(nèi)實(shí)例化的虛擬機(jī)相關(guān)聯(lián)的垃圾回收器模塊。應(yīng)該理解,在虛擬機(jī)執(zhí)行區(qū)域212內(nèi)實(shí)例化的每一虛擬機(jī)可以包括垃圾回收器302,內(nèi)存不足避免模塊214可以與每一垃圾回收器302進(jìn)行交互,以實(shí)現(xiàn)本技術(shù)。
[0045]堆304表示虛擬機(jī)內(nèi)的垃圾回收器302與之相關(guān)聯(lián)的存儲(chǔ)器區(qū)域。堆304被按不同的時(shí)間表示,從時(shí)間(Tl)的表示開始。在時(shí)間(Tl),堆最初是空的。
[0046]堆304具有由箭頭306表不的原始最大分配大小。箭頭308表不堆304的調(diào)整的最大大小。堆304內(nèi)的低于調(diào)整的最大大小的未使用的空閑空間310表示可以為由在相應(yīng)的虛擬機(jī)內(nèi)執(zhí)行的應(yīng)用生成的應(yīng)用級(jí)別的分配請(qǐng)求而分配的空間。堆304內(nèi)的未使用空閑空間310之上的未分配的堆區(qū)域312表示在沒有改變?nèi)缂^308所表示的調(diào)整的最大大小的情況下,不可以分配給應(yīng)用級(jí)別的分配請(qǐng)求的堆空間,如下面更詳細(xì)地描述的。對(duì)于給予實(shí)現(xiàn),視情況而定,未分配的堆區(qū)域312可以通過由箭頭308所表示的調(diào)整的最大值設(shè)置來(lái)實(shí)現(xiàn),或者可以實(shí)現(xiàn)為堆304內(nèi)的氣球,該氣球被充氣以消耗未分配的堆區(qū)域312。
[0047]隨著時(shí)間的推移,隨著應(yīng)用生成存儲(chǔ)器分配請(qǐng)求,垃圾回收器302分配在相應(yīng)的請(qǐng)求內(nèi)請(qǐng)求的存儲(chǔ)器。在時(shí)間(T2 ),一個(gè)或多個(gè)應(yīng)用正在消耗堆304內(nèi)的由消耗的空間314表示的原本未使用的空閑空間310 (在時(shí)間(Tl)處示出)的一部分,未使用的空閑空間310的其余部分如在時(shí)間(T2)所示。從圖3可以看出,在時(shí)間(T2),存儲(chǔ)器使用量低于由箭頭308表示的調(diào)整的最大值。
[0048]在時(shí)間(T3),所述一個(gè)或多個(gè)應(yīng)用使用了所有先前未使用的空閑空間310,到調(diào)整的最大值級(jí)別,未使用的空閑空間310不再存在,并被消耗的空間314充滿。出于本示例的目的,假設(shè)應(yīng)用中的至少一個(gè)需要更多存儲(chǔ)器。應(yīng)該注意,若沒有本技術(shù),需要更多存儲(chǔ)器的任何應(yīng)用在時(shí)間(T3)將遭遇OOM錯(cuò)誤,并將很可能由于OOM錯(cuò)誤的結(jié)果而終止。
[0049]然而,本技術(shù)允許垃圾回收器302在時(shí)間(T3)向內(nèi)存不足避免模塊214發(fā)送內(nèi)存不足回調(diào)。內(nèi)存不足回調(diào)可以包括基于來(lái)自需要更多存儲(chǔ)器的應(yīng)用的請(qǐng)求分配的請(qǐng)求的堆大小增大量,如由在時(shí)間(T3)處與堆304相關(guān)聯(lián)的線316和垂直箭頭所示。應(yīng)用存儲(chǔ)器分配請(qǐng)求可以被臨時(shí)阻止,而不會(huì)有應(yīng)用錯(cuò)誤終止。
[0050]響應(yīng)于接收到內(nèi)存不足回調(diào),內(nèi)存不足避免模塊214在框318計(jì)算/確定要向堆304添加的額外的未使用空閑空間的量,并對(duì)堆304進(jìn)行調(diào)整。內(nèi)存不足避免模塊214可以基于在內(nèi)存不足回調(diào)內(nèi)由垃圾回收器302提供的信息,來(lái)計(jì)算/確定要向堆304添加的額外的未使用空閑空間的量??闪磉x地,內(nèi)存不足避免模塊214可以被配置成基于來(lái)自垃圾回收器302的內(nèi)存不足回調(diào)的頻率、基于總的可用存儲(chǔ)器、或基于適合于給定實(shí)現(xiàn)的任何其他因素,進(jìn)行堆304的增量調(diào)整。此外,對(duì)于給定實(shí)現(xiàn),視情況而定,最大分配的堆調(diào)整可以通過增大最大調(diào)整的堆級(jí)別設(shè)置或者給正在消耗調(diào)整的最大級(jí)別以上的堆的氣球放氣來(lái)實(shí)現(xiàn)。
[0051]在時(shí)間(T4),堆調(diào)整完成,堆304再次包括基于由調(diào)整的箭頭308所表示的新的調(diào)整的最大值的未使用空閑空間310,內(nèi)存不足避免模塊214向垃圾回收器302發(fā)送重試分配消息。在框320,垃圾回收器302重試堆304的未使用空閑空間310內(nèi)的存儲(chǔ)器分配請(qǐng)求。在時(shí)間(T5),堆304再次被消耗到由調(diào)整的箭頭308所表示的調(diào)整的最大值,被消耗的空間314將堆304填充到新的調(diào)整的最大值??梢韵驊?yīng)用通知成功的存儲(chǔ)器分配,解除對(duì)應(yīng)用的阻止以繼續(xù)處理。
[0052]另外還應(yīng)該注意,內(nèi)存不足回調(diào)可以另選地被實(shí)現(xiàn)為如下變型,其中垃圾回收器302調(diào)用“處于壓力下”回調(diào),該回調(diào)向內(nèi)存不足避免模塊214通知垃圾回收器302必須努力工作以獲得可用存儲(chǔ)器,用于新存儲(chǔ)器分配。在這樣的實(shí)現(xiàn)中,實(shí)現(xiàn)為“處于壓力下”回調(diào)的內(nèi)存不足回調(diào)可以在應(yīng)用請(qǐng)求不能被滿足的存儲(chǔ)器分配之前執(zhí)行,以避免針對(duì)存儲(chǔ)器分配請(qǐng)求而臨時(shí)阻止應(yīng)用。
[0053]如此,本技術(shù)可以被實(shí)現(xiàn)為使虛擬機(jī)可以肯定地知道調(diào)整的最大值何時(shí)將導(dǎo)致OOM狀況,肯定地知道需要多少存儲(chǔ)器來(lái)滿足分配,以便調(diào)整的最大值被增大最佳量,并在進(jìn)行工作集大小調(diào)整之后允許嘗試的分配被重試。此外,隨著存儲(chǔ)器不再被需要,內(nèi)存不足避免模塊214可以通過減少由箭頭308所表示的調(diào)整的最大值設(shè)置或者通過充氣增大未分配的堆區(qū)域312的大小的氣球,來(lái)從堆304回收存儲(chǔ)器。內(nèi)存不足避免模塊214可以通過對(duì)每一相應(yīng)實(shí)例化的虛擬機(jī)的堆304內(nèi)的未使用空閑空間310的分析,來(lái)確定存儲(chǔ)器不再被消耗。
[0054]下面描述的圖4到圖5B表示可以由諸如核處理模塊200的設(shè)備執(zhí)行,以在與本主題相關(guān)聯(lián)的動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中執(zhí)行內(nèi)存不足避免的示例過程。示例過程的許多其他變型都是可以的,所有都視為在本主題的范圍內(nèi)。示例過程可以通過諸如內(nèi)存不足避免模塊214的模塊執(zhí)行和/或由與這樣的設(shè)備相關(guān)聯(lián)的CPU202來(lái)執(zhí)行。應(yīng)該注意,為便于說(shuō)明,在下述的示例過程內(nèi)沒有示出超時(shí)過程及其他錯(cuò)誤控制過程。然而,應(yīng)該理解,所有這樣的過程都被視為在本主題的范圍內(nèi)。此外,在不偏離本主題的范圍的情況下,所描述的過程可以組合,所描述的處理的序列可以改變,并可以添加或移除另外的處理。
[0055]圖4是用于在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足的過程400的實(shí)現(xiàn)的示例的流程圖。在框402,過程400通過處理器檢測(cè)相對(duì)于與應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆相關(guān)聯(lián)的調(diào)整的堆最大大小的未使用空閑存儲(chǔ)器不足,其中,調(diào)整的堆最大大小被設(shè)置為小于最大堆分配大小的堆大小。在框404,過程400計(jì)算解決未使用空閑存儲(chǔ)器不足的對(duì)調(diào)整的堆最大大小的增大量。在框406,過程400將調(diào)整的堆最大大小增大計(jì)算出的對(duì)調(diào)整的堆最大大小的增大量。
[0056]圖5A-5B示出了用于在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足的過程500的實(shí)現(xiàn)的示例的流程圖。圖5A示出了過程500內(nèi)的初始處理。在判斷點(diǎn)502,過程500判斷是否檢測(cè)到與虛擬機(jī)相關(guān)聯(lián)的存儲(chǔ)器分配請(qǐng)求。例如,過程500可以在虛擬機(jī)接收來(lái)自應(yīng)用的存儲(chǔ)器分配請(qǐng)求??闪磉x地,過程500可以作為與垃圾回收器相關(guān)聯(lián)的內(nèi)存不足處理程序而被觸發(fā),以處理與應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆相關(guān)聯(lián)的、相對(duì)于調(diào)整的堆最大值的檢測(cè)到的未使用空閑存儲(chǔ)器不足。
[0057]響應(yīng)于在判斷點(diǎn)502判斷沒有檢測(cè)到與虛擬機(jī)相關(guān)聯(lián)的存儲(chǔ)器分配請(qǐng)求,過程500在判斷點(diǎn)504判斷與垃圾回收器相關(guān)聯(lián)的垃圾回收處理是否涉及相對(duì)于為存儲(chǔ)器堆內(nèi)的空閑存儲(chǔ)器配置的正常工作負(fù)荷創(chuàng)建未使用空閑存儲(chǔ)器空間的垃圾回收活動(dòng)中的困難增大。響應(yīng)于在判斷點(diǎn)504判斷與垃圾回收器相關(guān)聯(lián)的垃圾回收處理不涉及垃圾回收活動(dòng)中的困難增大,過程500返回到判斷點(diǎn)502,并如上文和下面更詳細(xì)地描述地重復(fù)。響應(yīng)于判斷點(diǎn)504處的肯定判斷的處理將被推遲,并在下面更詳細(xì)地描述。
[0058]返回到判斷點(diǎn)502的描述,響應(yīng)于判斷檢測(cè)到與虛擬機(jī)相關(guān)聯(lián)的存儲(chǔ)器分配請(qǐng)求,過程500在框506確定由應(yīng)用請(qǐng)求的存儲(chǔ)器的量。應(yīng)該注意,對(duì)于給定實(shí)現(xiàn),視情況,存儲(chǔ)器分配可以與應(yīng)用存儲(chǔ)器分配請(qǐng)求協(xié)調(diào),以使超出調(diào)整的堆最大值的每一存儲(chǔ)器請(qǐng)求都等同于將滿足該應(yīng)用存儲(chǔ)器分配請(qǐng)求的調(diào)整的堆最大值的增大??闪磉x地,應(yīng)用存儲(chǔ)器分配請(qǐng)求可以部分地由存儲(chǔ)器堆內(nèi)的可用存儲(chǔ)器分配空間來(lái)滿足,未使用空閑存儲(chǔ)器不足可以通過小于應(yīng)用存儲(chǔ)器分配請(qǐng)求的調(diào)整的堆最大值的增大來(lái)滿足。作為另一個(gè)替代方案,調(diào)整的堆最大值可以被增大比應(yīng)用存儲(chǔ)器分配請(qǐng)求更大的量,以允許響應(yīng)于所述調(diào)整的另外的分配,并減少對(duì)調(diào)整的堆最大值的調(diào)整的次數(shù)。另外,對(duì)于給定實(shí)現(xiàn),視情況而定,過程500可以計(jì)算調(diào)整的堆最大值的增大量,以通過內(nèi)存不足處理程序來(lái)解決未使用空閑存儲(chǔ)器不足。
[0059]在判斷點(diǎn)508,過程500判斷由應(yīng)用請(qǐng)求的存儲(chǔ)器的量是否將導(dǎo)致應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆超出調(diào)整的堆最大大小。對(duì)由應(yīng)用請(qǐng)求的存儲(chǔ)器的量是否將導(dǎo)致應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆超出調(diào)整的堆最大大小的判斷可以包括:計(jì)算調(diào)整的堆最大大小的解決與存儲(chǔ)器分配請(qǐng)求相關(guān)聯(lián)的未使用空閑存儲(chǔ)器不足的增大量。
[0060]響應(yīng)于判斷由應(yīng)用請(qǐng)求的存儲(chǔ)器的量不會(huì)導(dǎo)致應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆超出調(diào)整的堆最大大小,過程500在框510分配請(qǐng)求的存儲(chǔ)器。在框512,過程500向應(yīng)用返回對(duì)于存儲(chǔ)器分配的確認(rèn),并返回到判斷點(diǎn)502,并如上文所描述地重復(fù)。
[0061]返回到判斷點(diǎn)508的描述,響應(yīng)于判斷由應(yīng)用請(qǐng)求的存儲(chǔ)器的量將導(dǎo)致應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆超出調(diào)整的堆最大大小,過程500在框514阻止應(yīng)用(例如,臨時(shí)執(zhí)行阻止)。過程500可以例如阻止請(qǐng)求的應(yīng)用存儲(chǔ)器分配。在框516,過程500分配確定的由應(yīng)用請(qǐng)求的存儲(chǔ)器的量,作為計(jì)算出的對(duì)調(diào)整的堆最大大小的增大量。對(duì)于給定實(shí)現(xiàn),視情況而定,過程500可以另選地分配計(jì)算出的解決未使用空閑存儲(chǔ)器不足的對(duì)調(diào)整的堆最大大小的增大量,其中,小于請(qǐng)求的存儲(chǔ)器分配的調(diào)整的堆最大值增大將滿足分配請(qǐng)求。
[0062]在判斷點(diǎn)518,過程500判斷分配的/計(jì)算出的解決未使用空閑存儲(chǔ)器不足的對(duì)調(diào)整的堆最大大小的增大量是否超出分配給虛擬機(jī)的整個(gè)堆的最大堆大小。響應(yīng)于判斷分配的/計(jì)算出的解決未使用空閑存儲(chǔ)器不足的對(duì)調(diào)整的堆最大大小的增大量超出分配給虛擬機(jī)的整個(gè)堆的最大堆大小,過程500在框520生成錯(cuò)誤,并返回到判斷點(diǎn)502以如上文所述地重復(fù)。[0063]應(yīng)該注意,過程500可以實(shí)現(xiàn)存儲(chǔ)器分配策略,并可以知道全部存儲(chǔ)器和向所有實(shí)例化的虛擬機(jī)的分配。如此,過程500可以另外/另選地跨一組虛擬機(jī)來(lái)調(diào)整堆最大大小分配,以使用存儲(chǔ)器分配策略,從其他虛擬機(jī)回收未使用的堆空間。對(duì)于給定實(shí)現(xiàn),視情況而定,過程500可以分配該回收的可用的堆空間,以增大帶有空閑存儲(chǔ)器不足的虛擬機(jī)的分配的最大堆大小。如此,響應(yīng)于在判斷點(diǎn)518判斷分配的/計(jì)算出的解決未使用空閑存儲(chǔ)器不足的對(duì)調(diào)整的堆最大大小的增大量不超出整個(gè)堆的最大堆大小(或響應(yīng)于從其他虛擬機(jī)回收未使用的堆空間并分配該可用的堆空間以增大帶有空閑存儲(chǔ)器不足的虛擬機(jī)的分配的最大堆大小),過程500在框522將調(diào)整的堆最大大小增大由應(yīng)用請(qǐng)求的存儲(chǔ)器的量(或小于請(qǐng)求的存儲(chǔ)器的量的該計(jì)算出的量,對(duì)于給定實(shí)現(xiàn),視情況而定)。過程500可以通過改變調(diào)整的堆最大大小值或通過給堆消耗氣球放氣,來(lái)增大調(diào)整的堆最大大小,對(duì)于給定實(shí)現(xiàn),視情況而定。
[0064]在框524,過程500重試存儲(chǔ)器分配。例如,過程500可以響應(yīng)于將調(diào)整的堆最大大小增大計(jì)算出的對(duì)調(diào)整的堆最大大小的增大量,請(qǐng)求垃圾回收器重試請(qǐng)求的應(yīng)用存儲(chǔ)器分配。在判斷點(diǎn)526,過程500判斷存儲(chǔ)器分配是否完成。響應(yīng)于判斷存儲(chǔ)器分配完成,過程500在框528解除對(duì)應(yīng)用的阻止。如此,過程500可以響應(yīng)于將調(diào)整的堆最大大小增大計(jì)算出的對(duì)調(diào)整的堆最大大小的增大量,解除對(duì)請(qǐng)求的應(yīng)用存儲(chǔ)器分配的阻止。過程500返回到判斷點(diǎn)502,并如上文所述地重復(fù)。
[0065]返回到判斷點(diǎn)504的描述,響應(yīng)于判斷與垃圾回收器相關(guān)聯(lián)的垃圾回收處理涉及相對(duì)于為存儲(chǔ)器堆內(nèi)的空閑存儲(chǔ)器配置的正常工作負(fù)荷創(chuàng)建未使用空閑存儲(chǔ)器空間的垃圾回收活動(dòng)中的困難增大,過程500過渡到與圖5B相關(guān)聯(lián)地示出和描述的處理。
[0066]圖5B示出了與用于在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中避免內(nèi)存不足的過程500相關(guān)聯(lián)的另外的處理。在框530,過程500計(jì)算使垃圾回收活動(dòng)返回到為存儲(chǔ)器堆內(nèi)的空閑存儲(chǔ)器配置的正常工作負(fù)荷的額外堆存儲(chǔ)器的量。在判斷點(diǎn)532,處理500判斷計(jì)算出的使垃圾回收活動(dòng)返回到為存儲(chǔ)器堆內(nèi)的空閑存儲(chǔ)器配置的正常工作負(fù)荷的額外堆存儲(chǔ)器的量是否超出分配給虛擬機(jī)的整個(gè)堆的最大堆大小。
[0067]響應(yīng)于判斷計(jì)算出的使垃圾回收活動(dòng)返回到為存儲(chǔ)器堆內(nèi)的空閑存儲(chǔ)器配置的正常工作負(fù)荷的額外堆存儲(chǔ)器的量超出分配給虛擬機(jī)的整個(gè)堆的最大堆大小,過程500在框534生成錯(cuò)誤。如上文所述,應(yīng)該注意,過程500可以實(shí)現(xiàn)存儲(chǔ)器分配策略,并可以知道總存儲(chǔ)器和向所有實(shí)例化的虛擬機(jī)的分配。如此,過程500可以另外/另選地跨一組虛擬機(jī)來(lái)調(diào)整堆最大大小分配,以使用存儲(chǔ)器分配策略,從其他虛擬機(jī)回收未使用的堆空間。過程500可以分配該回收的可用堆空間,以增大帶有空閑存儲(chǔ)器不足的虛擬機(jī)的分配的最大堆大小,對(duì)于給定實(shí)現(xiàn),視情況而定。
[0068]如此,響應(yīng)于在判斷點(diǎn)532判斷計(jì)算出的使垃圾回收活動(dòng)返回到為存儲(chǔ)器堆內(nèi)的空閑存儲(chǔ)器配置的正常工作負(fù)荷的額外堆存儲(chǔ)器的量不超出分配給虛擬機(jī)的整個(gè)堆的最大堆大小(或響應(yīng)于從其他虛擬機(jī)回收未使用的堆空間并分配該可用的堆空間以增大其垃圾回收處理正在經(jīng)歷存儲(chǔ)器壓力的虛擬機(jī)的分配的最大堆大小),過程500在框536將調(diào)整的堆最大大小增大足以減輕所述存儲(chǔ)器壓力的計(jì)算出的量。過程500可以通過改變調(diào)整的堆最大大小值或通過給堆消耗氣球放氣,來(lái)增大調(diào)整的堆最大大小,對(duì)于給定實(shí)現(xiàn),視情況而定。響應(yīng)于在框534生成錯(cuò)誤通知,或者響應(yīng)于在框536將調(diào)整的堆最大大小增大足以減輕存儲(chǔ)器壓力的計(jì)算出的量,過程500返回到與圖5A的框502相關(guān)聯(lián)地描述的處理,并如上文所述地重復(fù)。
[0069]如此,過程500檢測(cè)存儲(chǔ)器分配請(qǐng)求,并處理那些請(qǐng)求,以判斷存儲(chǔ)器分配請(qǐng)求是否將超出當(dāng)前配置的調(diào)整的堆最大大小。過程500計(jì)算滿足將超出當(dāng)前配置的調(diào)整的堆最大大小的存儲(chǔ)器分配請(qǐng)求的額外堆空間的量,并增大相應(yīng)的虛擬機(jī)的存儲(chǔ)器堆的調(diào)整的大小。過程500還可跨多個(gè)虛擬機(jī)調(diào)整分配的堆大小,回收未使用的堆空間,并將回收的存儲(chǔ)器空間重新分配到正經(jīng)歷未使用空閑存儲(chǔ)器不足的其他虛擬機(jī)。過程500還可操作以檢測(cè)垃圾回收器正在經(jīng)歷存儲(chǔ)器壓力,而同時(shí)試圖收集未使用的存儲(chǔ)器,并可以增大調(diào)整的堆最大大小以減輕存儲(chǔ)器壓力。
[0070]如上文與圖1到圖5B相關(guān)聯(lián)地描述的,示例系統(tǒng)和過程提供在動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中的內(nèi)存不足避免。與動(dòng)態(tài)虛擬機(jī)存儲(chǔ)器調(diào)整中的內(nèi)存不足避免相關(guān)聯(lián)的許多其他變型和另外的活動(dòng)是可以的,所有都被視為在本主題的范圍內(nèi)。
[0071]所屬領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,在考慮上面的教導(dǎo)后,上面的示例中的某些基于諸如CPU202的編程處理器的使用。然而,本發(fā)明不僅限于這樣的示例實(shí)施例,因?yàn)槠渌麑?shí)施例可以使用諸如專用硬件和/或?qū)S锰幚砥鞯挠布M件等同物來(lái)實(shí)現(xiàn)。類似地,可以使用通用計(jì)算機(jī)、基于微處理器的計(jì)算機(jī)、微控制器、光學(xué)計(jì)算機(jī)、模擬計(jì)算機(jī)、專用處理器、專用電路和/或?qū)S糜策B線邏輯來(lái)構(gòu)建替代的等同實(shí)施例。
[0072]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的各個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件實(shí)施方式、完全的軟件實(shí)施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié)合的實(shí)施方式,這里可以統(tǒng)稱為〃電路"、〃模塊〃或〃系統(tǒng)"。此外,在一些實(shí)施例中,本發(fā)明的各個(gè)方面還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼。
[0073]可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、便攜式緊湊盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0074]計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括——但不限于——電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)還可以是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0075]計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無(wú)線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0076]可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任意組合來(lái)編寫用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言一諸如Java?、Smalltalk、C++等,還包括常規(guī)的過程式程序設(shè)計(jì)語(yǔ)言一諸如"C"語(yǔ)言或類似的程序設(shè)計(jì)語(yǔ)言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過因特網(wǎng)連接)。
[0077]下面將參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些計(jì)算機(jī)程序指令在通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。
[0078]也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,這些指令使得計(jì)算機(jī)、或其它可編程數(shù)據(jù)處理裝置以特定方式工作,從而,存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的指令就產(chǎn)生出包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的指令的制造品(article of manufacture)0
[0079]計(jì)算機(jī)程序指令還可以加載到計(jì)算機(jī)、其他可編程數(shù)據(jù)處理設(shè)備或其他設(shè)備中,以使一系列操作步驟在計(jì)算機(jī)、其他可編程設(shè)備或其他設(shè)備上執(zhí)行,以產(chǎn)生一種計(jì)算機(jī)實(shí)現(xiàn)的過程,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖和/或框圖的框中指定的功能/動(dòng)作的過程。
[0080]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
[0081]適于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括至少一個(gè)直接或通過系統(tǒng)總線間接地耦接到存儲(chǔ)器元件的處理器。存儲(chǔ)器元件可以包括在程序代碼的實(shí)際執(zhí)行期間使用的本地存儲(chǔ)器、大容量存儲(chǔ)器、以及高速緩沖存儲(chǔ)器,高速緩沖存儲(chǔ)器提供了至少某些程序代碼的臨時(shí)存儲(chǔ)器,以減少在執(zhí)行期間必須從大容量存儲(chǔ)器取回代碼的次數(shù)。
[0082]輸入/輸出或I/O設(shè)備(包括但不僅限于,鍵盤、顯示器、定點(diǎn)設(shè)備等)可以直接或者通過介入的I/o控制器耦接到系統(tǒng)。
[0083]網(wǎng)絡(luò)適配器也可以耦接到系統(tǒng),以使得數(shù)據(jù)處理系統(tǒng)能夠通過介入的私有或公共網(wǎng)絡(luò)耦接到其他數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡就是幾個(gè)當(dāng)前可用類型的網(wǎng)絡(luò)適配器。[0084]本文使用的術(shù)語(yǔ)只是為了描述特定實(shí)施例,而不是要對(duì)本發(fā)明進(jìn)行限制。本文所使用的單數(shù)形式“一個(gè)”也要包括復(fù)數(shù)形式,除非上下文明確地指出不是如此。還應(yīng)該理解,本說(shuō)明中使用的術(shù)語(yǔ)“包括”和/或“包含”表明聲稱的特征、整數(shù)、步驟、操作、元件和/或組件的存在,但是并不排除一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或其組合的存在或添加。
[0085]下面的權(quán)利要求中的所有裝置或步驟加功能元件的對(duì)應(yīng)的結(jié)構(gòu)、材料、動(dòng)作以及等同物意圖包括用于與專門主張的其他權(quán)利要求要素相結(jié)合地執(zhí)行功能的任何結(jié)構(gòu)、材料或動(dòng)作。提供本發(fā)明的描述是為了例示和說(shuō)明的目的,而不是要窮盡地公開或把本發(fā)明局限于所公開的形式。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,在不偏離本發(fā)明的范圍和精神的情況下,許多修改和變型是顯而易見的。選擇和描述實(shí)施例只是為了最好地說(shuō)明本發(fā)明的原理和實(shí)際應(yīng)用,并使本領(lǐng)域的其他技術(shù)人員能夠理解本發(fā)明的帶有適于設(shè)想的特定用途的各種修改的各種實(shí)施例。
【權(quán)利要求】
1.一種方法,包括: 通過處理器檢測(cè)相對(duì)于與應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆相關(guān)聯(lián)的調(diào)整的堆最大大小的未使用空閑存儲(chǔ)器不足,其中,所述調(diào)整的堆最大大小被設(shè)置為小于最大堆分配大小的堆大?。? 計(jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整的堆最大大小的增大量;以及 將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量。
2.如權(quán)利要求1所述的方法,其中,通過處理器檢測(cè)相對(duì)于與應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆相關(guān)聯(lián)的調(diào)整的堆最大大小的未使用空閑存儲(chǔ)器不足包括: 接收來(lái)自應(yīng)用的存儲(chǔ)器分配請(qǐng)求; 確定由所述應(yīng)用請(qǐng)求的存儲(chǔ)器的量;以及 確定由所述應(yīng)用請(qǐng)求的存儲(chǔ)器的量將導(dǎo)致應(yīng)用存儲(chǔ)器分配的所述存儲(chǔ)器堆超出所述調(diào)整的堆最大大小。
3.如權(quán)利要求2所述的方法,其中: 計(jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整的堆最大大小的增大量包括: 分配所確定的由所述應(yīng)用請(qǐng)求的存儲(chǔ)器的量,作為所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量;以及 將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量包括: 將所述調(diào)整的堆最大大小增大所確定的由所述應(yīng)用請(qǐng)求的存儲(chǔ)器的量。
4.如權(quán)利要求1所述的方法,其中: 通過處理器檢測(cè)相對(duì)于與應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆相關(guān)聯(lián)的調(diào)整的堆最大大小的未使用空閑存儲(chǔ)器不足包括:確定垃圾回收處理涉及相對(duì)于為所述存儲(chǔ)器堆內(nèi)的空閑存儲(chǔ)器配置的正常工作負(fù)荷創(chuàng)建未使用空閑存儲(chǔ)器空間的垃圾回收活動(dòng)中的困難增大;以及計(jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整的堆最大大小的增大量包括:計(jì)算使所述垃圾回收活動(dòng)返回到為所述存儲(chǔ)器堆內(nèi)的空閑存儲(chǔ)器配置的正常工作負(fù)荷的額外的堆存儲(chǔ)器的量。
5.如權(quán)利要求1所述的方法,其中,將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量包括改變調(diào)整的堆最大大小值和給堆消耗氣球放氣中的一項(xiàng)。
6.如權(quán)利要求1所述的方法,還包括: 響應(yīng)于檢測(cè)到未使用空閑存儲(chǔ)器不足,阻止請(qǐng)求的應(yīng)用存儲(chǔ)器分配;以及響應(yīng)于將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量,解除對(duì)請(qǐng)求的應(yīng)用存儲(chǔ)器分配的阻止。
7.如權(quán)利要求1所述的方法,其中,通過處理器檢測(cè)相對(duì)于與應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆相關(guān)聯(lián)的調(diào)整的堆最大大小的未使用空閑存儲(chǔ)器不足包括,通過由所述處理器執(zhí)行的垃圾回收器來(lái)檢測(cè)未使用空閑存儲(chǔ)器不足,所述方法還包括: 響應(yīng)于檢測(cè)到未使用空閑存儲(chǔ)器不足,通過所述垃圾回收器觸發(fā)內(nèi)存不足處理程序以處理檢測(cè)到的未使用空閑存儲(chǔ)器不足; 其中,計(jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整的堆最大大小的增大量包括,通過所述內(nèi)存不足處理程序,計(jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整堆最大大小的增大量;以及所述方法還包括響應(yīng)于將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量,通過所述內(nèi)存不足處理程序,請(qǐng)求所述垃圾回收器重試請(qǐng)求的應(yīng)用存儲(chǔ)器分配。
8.如權(quán)利要求1所述的方法,還包括: 使用存儲(chǔ)器分配策略來(lái)識(shí)別總存儲(chǔ)器和與多個(gè)實(shí)例化的虛擬機(jī)相關(guān)聯(lián)的分配; 基于所述存儲(chǔ)器分配策略,從所述多個(gè)實(shí)例化的虛擬機(jī)中的至少一個(gè)回收未使用的堆空間;以及 其中,將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量包括:使用所回收的未使用的堆空間,將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大 小的增大量。
9.一種系統(tǒng),包括: 存儲(chǔ)器;以及 處理器,被編程為: 檢測(cè)相對(duì)于與所述存儲(chǔ)器內(nèi)的應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆相關(guān)聯(lián)的調(diào)整的堆最大大小的未使用空閑存儲(chǔ)器不足,其中,所述調(diào)整的堆最大大小被設(shè)置為小于最大堆分配大小的堆大?。? 計(jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整的堆最大大小的增大量;以及 將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量。
10.如權(quán)利要求9所述的系統(tǒng),其中,在被編程為檢測(cè)相對(duì)于與所述存儲(chǔ)器內(nèi)的應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆相關(guān)聯(lián)的調(diào)整的堆最大大小的未使用空閑存儲(chǔ)器不足時(shí),所述處理器被編程為: 接收來(lái)自應(yīng)用的存儲(chǔ)器分配請(qǐng)求; 確定由所述應(yīng)用請(qǐng)求的存儲(chǔ)器的量;以及 確定由所述應(yīng)用請(qǐng)求的存儲(chǔ)器的量將導(dǎo)致應(yīng)用存儲(chǔ)器分配的所述存儲(chǔ)器堆超出所述調(diào)整的堆最大大小。
11.如權(quán)利要求10所述的系統(tǒng),其中: 在被編程為計(jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整的堆最大大小的增大量時(shí),所述處理器被編程為: 分配所確定的由所述應(yīng)用請(qǐng)求的存儲(chǔ)器的量,作為所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量;以及 在被編程為將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量時(shí),所述處理器被編程為: 將所述調(diào)整的堆最大大小增大所確定的由所述應(yīng)用請(qǐng)求的存儲(chǔ)器的量。
12.如權(quán)利要求9所述的系統(tǒng),其中: 在被編程為檢測(cè)相對(duì)于與所述存儲(chǔ)器內(nèi)的應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆相關(guān)聯(lián)的調(diào)整的堆最大大小的未使用空閑存儲(chǔ)器不足時(shí),所述處理器被編程為確定垃圾回收處理涉及相對(duì)于為所述存儲(chǔ)器堆內(nèi)的空閑存儲(chǔ)器配置的正常工作負(fù)荷創(chuàng)建未使用空閑存儲(chǔ)器空間的垃圾回收活動(dòng)中的困難增大;以及 在被編程為計(jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整的堆最大大小的增大量時(shí),所述處理器被編程為計(jì)算使垃圾回收活動(dòng)返回到為所述存儲(chǔ)器堆內(nèi)的空閑存儲(chǔ)器配置的正常工作負(fù)荷的額外的堆存儲(chǔ)器的量。
13.如權(quán)利要求9所述的系統(tǒng),其中,在被編程為將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量時(shí),所述處理器被編程為改變調(diào)整的堆最大大小值和給堆消耗氣球放氣中的一項(xiàng)。
14.如權(quán)利要求9所述的系統(tǒng),其中,所述處理器還被編程為: 響應(yīng)于檢測(cè)到所述未使用空閑存儲(chǔ)器不足,阻止請(qǐng)求的應(yīng)用存儲(chǔ)器分配;以及 響應(yīng)于將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量,解除對(duì)所述請(qǐng)求的應(yīng)用存儲(chǔ)器分配的阻止。
15.如權(quán)利要求9所述的系統(tǒng),其中,在被編程為檢測(cè)相對(duì)于與所述存儲(chǔ)器內(nèi)的應(yīng)用存儲(chǔ)器分配的存儲(chǔ)器堆相關(guān)聯(lián)的調(diào)整的堆最大大小的未使用空閑存儲(chǔ)器不足時(shí),所述處理器被編程為通過由所述處理器執(zhí)行的垃圾回收器來(lái)檢測(cè)所述未使用空閑存儲(chǔ)器不足,所述處理器還被編程為: 響應(yīng)于檢測(cè)到所述未使用空閑存儲(chǔ)器不足,通過垃圾回收器來(lái)觸發(fā)內(nèi)存不足處理程序以處理所檢測(cè)到的未使用空閑存儲(chǔ)器不足; 其中,在被編程為計(jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整的堆最大大小的增大量時(shí),所述處理器被編程為,通過所述內(nèi)存不足處理程序,計(jì)算解決所述未使用空閑存儲(chǔ)器不足的對(duì)所述調(diào)整的堆最大大小的增大量;以及 所述處理器還被編程為,響應(yīng)于將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量,通過所述內(nèi)存不足處理程序,請(qǐng)求所述垃圾回收器重試請(qǐng)求的應(yīng)用存儲(chǔ)器分配。
16.如權(quán)利要求9所述的系統(tǒng),其中,所述處理器還被編程為: 使用存儲(chǔ)器分配策略來(lái)識(shí)別總存儲(chǔ)器和與多個(gè)實(shí)例化的虛擬機(jī)相關(guān)聯(lián)的分配; 基于所述存儲(chǔ)器分配策略,從所述多個(gè)實(shí)例化的虛擬機(jī)中的至少一個(gè)回收未使用的堆空間;以及 其中,在被編程為將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量時(shí),所述處理器被編程為,使用所回收的未使用的堆空間,將所述調(diào)整的堆最大大小增大所計(jì)算出的對(duì)所述調(diào)整的堆最大大小的增大量。
【文檔編號(hào)】G06F9/455GK103838633SQ201310585908
【公開日】2014年6月4日 申請(qǐng)日期:2013年11月20日 優(yōu)先權(quán)日:2012年11月20日
【發(fā)明者】M·H·道森, C·R·格雷西, G·D·詹森 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1