国产精品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>

      虛擬化計(jì)算環(huán)境中的動(dòng)態(tài)內(nèi)存管理的制作方法

      文檔序號(hào):6494621閱讀:269來源:國(guó)知局
      虛擬化計(jì)算環(huán)境中的動(dòng)態(tài)內(nèi)存管理的制作方法
      【專利摘要】提供一種虛擬化計(jì)算環(huán)境中的內(nèi)存管理方法,其中系統(tǒng)管理程序在主機(jī)上至少實(shí)現(xiàn)一虛擬機(jī)(VM),其中在所述VM上執(zhí)行來賓操作系統(tǒng)(OS),并且在所述來賓OS上執(zhí)行支持內(nèi)存管理能力的應(yīng)用。所述方法包括:響應(yīng)于所述系統(tǒng)管理程序提交的請(qǐng)求,調(diào)用所述應(yīng)用實(shí)現(xiàn)的第一內(nèi)存管理器(java氣球),以取消分配被分配給所述應(yīng)用的內(nèi)存以便供所述系統(tǒng)管理程序使用;以及響應(yīng)于所述系統(tǒng)管理程序提交的請(qǐng)求,調(diào)用在所述來賓操作系統(tǒng)上實(shí)現(xiàn)的第二內(nèi)存管理器(來賓氣球),以便取消分配被分配給所述來賓OS的內(nèi)存。
      【專利說明】虛擬化計(jì)算環(huán)境中的動(dòng)態(tài)內(nèi)存管理
      【技術(shù)領(lǐng)域】
      [0001]所公開的主題一般地涉及動(dòng)態(tài)內(nèi)存分配,更具體地說,涉及用于控制與在虛擬化計(jì)算環(huán)境中執(zhí)行的程序關(guān)聯(lián)的已分配內(nèi)存的大小的系統(tǒng)和方法。
      【背景技術(shù)】
      [0002]動(dòng)態(tài)內(nèi)存分配指在計(jì)算機(jī)程序運(yùn)行時(shí)將內(nèi)存分配給該程序。動(dòng)態(tài)分配有助于高效地將有限的內(nèi)存資源分配給同時(shí)執(zhí)行的若干程序??梢詮奈词褂脙?nèi)存池在所述程序之間分配內(nèi)存,該內(nèi)存池由稱為堆的數(shù)據(jù)結(jié)構(gòu)或其它合適的內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)來管理。當(dāng)程序不再需要內(nèi)存時(shí),將已分配的資源釋放回堆(即,取消分配)。
      [0003]虛擬化環(huán)境中的動(dòng)態(tài)內(nèi)存分配通常更具挑戰(zhàn)性,因?yàn)閮?nèi)存資源在多個(gè)虛擬化組件(例如系統(tǒng)管理程序、一個(gè)或多個(gè)虛擬機(jī)(VM)和對(duì)應(yīng)的來賓(guest)軟件)之間共享。系統(tǒng)管理程序在主機(jī)上運(yùn)行以便支持將資源分配給VM。VM允許來賓軟件在主機(jī)上執(zhí)行,而來賓軟件無需知曉主機(jī)的底層硬件規(guī)范。換言之,VM為來賓軟件提供平臺(tái)無關(guān)的(B卩,虛擬)執(zhí)行環(huán)境。
      [0004]在虛擬化環(huán)境中,將用于來賓軟件的內(nèi)存空間分成通常為4KB的塊(稱為頁)。還將物理內(nèi)存(即,主機(jī)的內(nèi)存)分成塊,通常也為4KB。當(dāng)主機(jī)的內(nèi)存已滿時(shí),將未存在于主機(jī)內(nèi)存中的虛擬頁的數(shù)據(jù)存儲(chǔ)在磁盤上。因此,可以存在三個(gè)內(nèi)存層:來賓虛擬內(nèi)存、來賓物理內(nèi)存和主機(jī)物理內(nèi)存。當(dāng)動(dòng)態(tài)分配內(nèi)存時(shí),每個(gè)來賓根據(jù)其配置的大小以及用于虛擬化的額外內(nèi)存開銷來使用內(nèi)存。
      [0005]來賓有時(shí)使用的內(nèi)存多于主機(jī)物理上可用的內(nèi)存。例如,各自被分配2GB內(nèi)存的三個(gè)來賓可以在具有4GB物理內(nèi)存的主機(jī)上運(yùn)行。在這種情況下,可以說內(nèi)存的過度使用量約為2GB。為了提高內(nèi)存利用率,系統(tǒng)管理程序可以從空閑來賓軟件取消分配內(nèi)存,并將內(nèi)存分配給需要更多內(nèi)存的來賓軟件。
      [0006]當(dāng)主機(jī)中的總內(nèi)存量變得低時(shí),來賓軟件可能均不釋放來賓物理內(nèi)存,因?yàn)閬碣eOS無法檢測(cè)到主機(jī)的內(nèi)存不足。具體地說,Java虛擬機(jī)(JVM)(其是用于轉(zhuǎn)換和執(zhí)行Java字節(jié)代碼的平臺(tái)無關(guān)的執(zhí)行環(huán)境)缺少自動(dòng)機(jī)制以便在運(yùn)行時(shí)從外部控制堆大小。在JVM中,當(dāng)JVM啟動(dòng)時(shí)定義堆大小的最小和最大值。在運(yùn)行時(shí)期間,堆大小通常增加,并且不可由JVM減小。
      [0007]在上面的情形中,OS將物理內(nèi)存的一部分分配給JVM,如對(duì)任何來賓進(jìn)程所做的那樣。如果JVM消耗的內(nèi)存多于可用的物理內(nèi)存,則OS開始將用戶空間內(nèi)存交換到磁盤或類似的外部設(shè)備。該過程明顯降低JVM和整體系統(tǒng)的性能。在某些實(shí)現(xiàn)中,當(dāng)多個(gè)VM在單個(gè)主機(jī)上運(yùn)行并共享固定數(shù)量的物理內(nèi)存時(shí),系統(tǒng)管理程序可能過度使用內(nèi)存以降低成本,方式為:使VM誤以為它們具有的內(nèi)存多于物理機(jī)上實(shí)際可用的內(nèi)存。
      [0008]由于JVM和系統(tǒng)管理程序之間沒有協(xié)作的這一實(shí)際情況,當(dāng)VM在內(nèi)部運(yùn)行JVM并且JVM的堆大小大于系統(tǒng)管理程序分配的物理內(nèi)存時(shí),將在主機(jī)或來賓級(jí)別發(fā)生交換,從而也會(huì)降低VM和整體主機(jī)的性能。在JVM性能和堆大小之間存在公知的權(quán)衡。盡管減小堆大小會(huì)降低JVM性能,但這種性能下降也比堆大小大于可用物理內(nèi)存時(shí)導(dǎo)致的性能下降
      小一個(gè)數(shù)量級(jí)。

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

      [0009]根據(jù)一個(gè)實(shí)施例,提供一種虛擬化計(jì)算環(huán)境中的內(nèi)存管理方法,其中系統(tǒng)管理程序在主機(jī)上至少實(shí)現(xiàn)一虛擬機(jī)(VM),其中在所述VM上執(zhí)行來賓操作系統(tǒng)(OS),并且在所述來賓OS上執(zhí)行支持內(nèi)存管理能力的應(yīng)用。所述方法包括:響應(yīng)于所述系統(tǒng)管理程序提交的請(qǐng)求,調(diào)用所述應(yīng)用實(shí)現(xiàn)的第一內(nèi)存管理器(java氣球(java balloon)),以取消分配被分配給所述應(yīng)用的內(nèi)存以便供所述系統(tǒng)管理程序使用;以及響應(yīng)于所述系統(tǒng)管理程序提交的請(qǐng)求,調(diào)用在所述來賓操作系統(tǒng)上實(shí)現(xiàn)的第二內(nèi)存管理器(來賓氣球),以便取消分配被分配給所述來賓OS的內(nèi)存。
      [0010]根據(jù)一個(gè)或多個(gè)實(shí)施例,提供一種包括一個(gè)或多個(gè)邏輯單元的系統(tǒng)。所述一個(gè)或多個(gè)邏輯單元被配置為執(zhí)行與上面所公開的方法關(guān)聯(lián)的功能和操作。在另一個(gè)實(shí)施例中,提供一種包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)具有計(jì)算機(jī)可讀程序。當(dāng)在計(jì)算機(jī)上執(zhí)行時(shí),所述計(jì)算機(jī)可讀程序?qū)е滤鲇?jì)算機(jī)執(zhí)行與上面所公開的方法關(guān)聯(lián)的功能和操作。
      【專利附圖】

      【附圖說明】
      [0011]現(xiàn)在僅通過實(shí)例的方式參考附圖描述本發(fā)明的優(yōu)選實(shí)施例,這些附圖是:
      [0012]圖1示出根據(jù)一個(gè)或多個(gè)實(shí)施例的示例性操作環(huán)境,其中在虛擬化計(jì)算環(huán)境中執(zhí)行多個(gè)VM ;
      [0013]圖2是根據(jù)在來賓內(nèi)部運(yùn)行JVM的示例性實(shí)施例的用于在虛擬化計(jì)算環(huán)境中動(dòng)態(tài)分配內(nèi)存的數(shù)據(jù)結(jié)構(gòu)的示例性框圖;
      [0014]圖3A和3B是根據(jù)一個(gè)實(shí)施例的用于動(dòng)態(tài)分配和取消分配內(nèi)存的示例性方法的流程圖;
      [0015]圖4A和4B是根據(jù)一個(gè)或多個(gè)實(shí)施例的其中可以運(yùn)行所公開的系統(tǒng)和方法的硬件和軟件環(huán)境的框圖。
      [0016]根據(jù)一個(gè)或多個(gè)實(shí)施例,不同圖中的相同標(biāo)號(hào)引用的特性、元素和方面表示相同、等效或類似的特性、元素或方面。
      【具體實(shí)施方式】
      [0017]參考圖1,在一個(gè)實(shí)施例中,示出一個(gè)示例性運(yùn)行時(shí)計(jì)算環(huán)境。如圖所示,操作環(huán)境110包括在主機(jī)100上運(yùn)行的系統(tǒng)管理程序112。系統(tǒng)管理程序112基本上用作主機(jī)100的操作系統(tǒng)(OS),并為一個(gè)或多個(gè)虛擬機(jī)(VM)提供運(yùn)行時(shí)環(huán)境。因此,操作環(huán)境110支持虛擬化系統(tǒng),其中可以在系統(tǒng)管理程序112之上執(zhí)行實(shí)例VM120和130。
      [0018]VMl20和130可以托管在來賓0S124或134之上運(yùn)行的一個(gè)或多個(gè)來賓軟件(例如應(yīng)用126、136)。如圖2中所示,可以在一個(gè)或多個(gè)來賓應(yīng)用126、136和系統(tǒng)管理程序112之間分配內(nèi)存。系統(tǒng)管理程序112從主機(jī)100上可用的空閑內(nèi)存空間(未示出)將內(nèi)存分配給VM120和130。來賓0S124將某些內(nèi)存分配給用于應(yīng)用126的內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)??梢酝ㄟ^一個(gè)或多個(gè)預(yù)先內(nèi)存保留(即,應(yīng)用氣球280)機(jī)制,保留所述內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)中的某些內(nèi)存,如下面進(jìn)一步詳細(xì)描述的那樣。
      [0019]參考圖2,在一個(gè)示例性實(shí)施例中,應(yīng)用126可以是Java虛擬機(jī)(JVM),并且內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)可以實(shí)現(xiàn)為堆222,堆222包括堆空閑空間260中的可用內(nèi)存池??梢允褂迷诖朔Q為“來賓氣球操縱”的過程以使來賓0S124知曉主機(jī)100的低內(nèi)存狀態(tài)(即,系統(tǒng)管理程序112需要額外的內(nèi)存)。在一個(gè)實(shí)施例中,當(dāng)系統(tǒng)管理程序112需要回收內(nèi)存時(shí),系統(tǒng)管理程序112與VM氣球驅(qū)動(dòng)器230 (即,來賓氣球驅(qū)動(dòng)器)或應(yīng)用氣球280或這兩者通信。取決于實(shí)現(xiàn),系統(tǒng)管理程序112可以針對(duì)VM氣球驅(qū)動(dòng)器230設(shè)置目標(biāo)氣球大小,以使來賓0S124氣球例如通過在來賓0S124中分配來賓物理頁而膨脹。
      [0020]在一種實(shí)現(xiàn)中,系統(tǒng)管理程序112根據(jù)一個(gè)或多個(gè)內(nèi)存管理策略使來賓0S124氣球膨脹(例如當(dāng)系統(tǒng)管理程序112處于內(nèi)存壓力之下時(shí))。通過使來賓氣球膨脹,系統(tǒng)管理程序112管理內(nèi)存分配以便達(dá)到已實(shí)施策略的目標(biāo)(例如將內(nèi)存壓力從主機(jī)100轉(zhuǎn)移到來賓0S124)。作為響應(yīng),VM氣球驅(qū)動(dòng)器230分配并可能固定(pin)來賓物理內(nèi)存。來賓0S124判定OS是否需要對(duì)來賓物理內(nèi)存執(zhí)行頁出,以便滿足VM氣球驅(qū)動(dòng)器230分配請(qǐng)求。
      [0021]如果來賓具有大量的空閑來賓物理內(nèi)存,則使來賓氣球膨脹不會(huì)引起分頁,并且不會(huì)影響來賓性能。但是,如果來賓已處于內(nèi)存壓力之下,則來賓0S124確定將哪些來賓物理頁頁出到虛擬交換設(shè)備,以便滿足氣球驅(qū)動(dòng)器的分配請(qǐng)求。因此,這種來賓氣球操縱機(jī)制允許來賓0S124智能地確定對(duì)哪些頁執(zhí)行頁出而無需系統(tǒng)管理程序112的參與。
      [0022]如果上面的來賓氣球操縱機(jī)制不足以回收內(nèi)存,則可以強(qiáng)制系統(tǒng)管理程序112針對(duì)來賓0S124創(chuàng)建單獨(dú)的交換文件,以便系統(tǒng)管理程序112可以直接將來賓物理內(nèi)存換出到該交換文件,這會(huì)為其它來賓釋放主機(jī)物理內(nèi)存。在一個(gè)實(shí)施例中,可以使用第二氣球機(jī)制(除去或不包括上面的來賓氣球機(jī)制)從內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)(例如在JVM的情況下為堆222)獲得或釋放內(nèi)存,以便將內(nèi)存分配或取消分配給正在運(yùn)行的來賓0S124。
      [0023]總而言之,在一個(gè)實(shí)施例中,可以使用該第二氣球操縱機(jī)制將堆222中的某些內(nèi)存分配給由來賓的操作系統(tǒng)(例如來賓0S124)實(shí)例化的氣球?qū)ο蟆T谙旅?,通過實(shí)例的方式將第二氣球操縱機(jī)制公開為已實(shí)現(xiàn),以便應(yīng)用于在JVM上運(yùn)行的來賓OS。因此,將氣球?qū)ο蠓Q為java氣球?qū)ο?10 (參見圖2)。
      [0024]但是,值得指出的是,在此公開的概念和機(jī)制可以應(yīng)用于虛擬機(jī)或JVM之外的虛擬化環(huán)境。因此,不應(yīng)將權(quán)利要求的范圍解釋為狹義地適用于在此公開的、與JVM或其它示例性特性或機(jī)制(被實(shí)現(xiàn)為用于諸如堆222之類的JVM環(huán)境)結(jié)合的實(shí)施例。盡管如此,例如出于一致性目的,將第二氣球機(jī)制稱為java氣球。因此,在此公開的概念適用于能夠在內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)(例如堆222)中管理內(nèi)存分配的其它應(yīng)用。
      [0025]再次參考圖1和2,java氣球?qū)ο?10的用途是充當(dāng)占位符,以便JVM或JVM托管的進(jìn)程不會(huì)使用分配給java氣球?qū)ο?10的內(nèi)存空間。通過這種方式,如果系統(tǒng)管理程序112需要額外的內(nèi)存(例如用于分配給在主機(jī)100上運(yùn)行的其它VM或進(jìn)程),則可以將java氣球?qū)ο?10所保留的內(nèi)存空間釋放給來賓0S124,并最終釋放給系統(tǒng)管理程序112,如下面進(jìn)一步詳細(xì)描述的那樣。
      [0026]在一個(gè)實(shí)施例中,JVM通過為java氣球?qū)ο?10分配更多或更少的內(nèi)存,使所謂的java氣球膨脹或緊縮。在概念上,java氣球指堆222的一部分,該部分被分配給java氣球?qū)ο?10以便為系統(tǒng)管理程序112保留內(nèi)存空間或者提供來賓OS124未使用的內(nèi)存220。堆空閑空間260的其余部分可用于由JVM (S卩,應(yīng)用126)實(shí)例化的常規(guī)對(duì)象200以實(shí)現(xiàn)其它目的。
      [0027]借助java氣球機(jī)制,其它進(jìn)程和應(yīng)用無法訪問被分配給java氣球?qū)ο?10的內(nèi)存空間。此外,將java氣球?qū)ο?10保留的內(nèi)存釋放給系統(tǒng)管理程序112時(shí),來賓0S124無法檢查其配額。在一個(gè)實(shí)施例中,可以將java氣球?qū)ο?10固定在JVM中,以便例如不會(huì)由于垃圾收集過程而在堆222中移動(dòng)java氣球?qū)ο?10。
      [0028]在一個(gè)實(shí)施例中,java氣球在JVM用戶空間進(jìn)程內(nèi)部用作線程,并獲得或釋放java氣球?qū)ο?10以便更改堆大小。如前所述,前面討論的來賓氣球機(jī)制未針對(duì)運(yùn)行基于Java的工作負(fù)載的VM解決內(nèi)存過度使用問題,因?yàn)楫?dāng)JVM堆大小大于當(dāng)前分配給VM的物理內(nèi)存量時(shí),來賓OS可能進(jìn)行密集交換。
      [0029]通過使用java氣球(例如可選地與來賓氣球機(jī)制結(jié)合),系統(tǒng)管理程序112可以控制分配給來賓0S124的物理內(nèi)存量以及在來賓0S124上運(yùn)行的應(yīng)用126 (例如JVM進(jìn)程)的內(nèi)存要求。簡(jiǎn)言之,系統(tǒng)管理程序112使用java氣球?qū)VM堆大小保持在VM物理內(nèi)存大小以下。通過這種方式,在JVM內(nèi)部使用java氣球時(shí),java應(yīng)用代碼或字節(jié)代碼可以保持不變,如下面進(jìn)一步詳細(xì)描述的那樣。
      [0030]參考圖2和3A,在一個(gè)實(shí)施例中,java氣球可以由占用堆222中的空間的一個(gè)或多個(gè)java氣球?qū)ο?10 (例如基元字節(jié)數(shù)組)實(shí)現(xiàn)。當(dāng)系統(tǒng)管理程序112請(qǐng)求從應(yīng)用獲得內(nèi)存時(shí),調(diào)用java氣球(S310)。通過從應(yīng)用內(nèi)存空間獲得內(nèi)存(例如在堆中分配新的java氣球?qū)ο?10)并保持其引用,使java氣球膨脹(S320)。在一個(gè)實(shí)施例中,例如使用java本機(jī)接口(JNI ),可以將java氣球?qū)ο?10固定在內(nèi)存中以防止垃圾收集過程移動(dòng)java氣球?qū)ο?10。
      [0031]可以使用過程或系統(tǒng)調(diào)用監(jiān)視是否可以將分配給java氣球?qū)ο?10的內(nèi)存釋放給來賓0S124 (S330)。在一種實(shí)現(xiàn)中,可以使用對(duì)象的本機(jī)引用(例如虛擬地址)向來賓0S124通知不再需要對(duì)應(yīng)于java氣球?qū)ο?10的內(nèi)存。例如,使用Linux中可用的madviseO系統(tǒng)調(diào)用,可以將內(nèi)存返回給來賓0S124 (S340)。根據(jù)上面的過程(即,S320到S340)使java氣球膨脹之后,可以使用來賓0S124的VM氣球驅(qū)動(dòng)器230,通過使來賓氣球膨脹從來賓OS 124獲得內(nèi)存(S350 )。
      [0032]與圖3A相反,圖3B示出根據(jù)一個(gè)實(shí)施例的方法,所述方法關(guān)于系統(tǒng)管理程序112不再需要內(nèi)存時(shí),如何將內(nèi)存返回給來賓0S124。如圖所示,在使java氣球緊縮之前,系統(tǒng)管理程序112可以調(diào)用來賓0S124的VM氣球驅(qū)動(dòng)器230以使來賓氣球緊縮(S360),如下面進(jìn)一步詳細(xì)描述的那樣。
      [0033]在一個(gè)實(shí)施例中,系統(tǒng)管理程序112可以請(qǐng)求java氣球?qū)⒎峙浣ojava氣球?qū)ο?10的內(nèi)存返回給應(yīng)用內(nèi)存空間(例如堆222) (S370)。
      [0034]系統(tǒng)管理程序112調(diào)用java氣球以使釋放給上面所公開的來賓0S124的內(nèi)存緊縮,并將該內(nèi)存轉(zhuǎn)移到JVM堆222。當(dāng)java氣球膨脹時(shí),java氣球檢查是否將內(nèi)存釋放給來賓0S124 (S380)。如果是,則從來賓0S124獲得分配給java氣球?qū)ο蟮膬?nèi)存(S390)。Java氣球釋放對(duì)java氣球?qū)ο蟮娜魏我?,以便來賓0S124將這些對(duì)象視為空閑空間,并可以在應(yīng)用空閑內(nèi)存空間中將它們用于其它用途(S395)。[0035]在下面,參考在Linux OS上的具有嵌入式j(luò)ava氣球的JVM中實(shí)現(xiàn)的示例性實(shí)施例,進(jìn)一步詳細(xì)公開與java氣球膨脹和緊縮關(guān)聯(lián)的過程。在此類實(shí)現(xiàn)中,將應(yīng)用入口點(diǎn)作為運(yùn)行時(shí)參數(shù)傳遞給JVM??梢允褂媒邮赵既肟邳c(diǎn)作為命令行參數(shù)的新入口點(diǎn)來更改入口點(diǎn)。新入口點(diǎn)啟動(dòng)負(fù)責(zé)創(chuàng)建具有初始大小(可以指定為命令行參數(shù))的java氣球的守護(hù)線程,然后啟動(dòng)原始入口點(diǎn)的執(zhí)行。守護(hù)線程在JVM進(jìn)程的生命周期內(nèi)保持活動(dòng)狀態(tài),并等待外部請(qǐng)求以增加或減小java氣球大小。這可以使用TCP套接字或任何其它進(jìn)程通信機(jī)制來完成。每次守護(hù)線程接收到請(qǐng)求時(shí),它通過釋放或獲得新對(duì)象而相應(yīng)地使java氣球膨脹或緊縮。
      [0036]使java氣球膨脹-當(dāng)氣球守護(hù)進(jìn)程接收到使java氣球膨脹的請(qǐng)求時(shí),它開始創(chuàng)建新對(duì)象直到j(luò)ava氣球達(dá)到對(duì)應(yīng)的大小。例如,如果氣球大小為100MB,并且守護(hù)進(jìn)程接收到使其膨脹為300MB的請(qǐng)求,則守護(hù)進(jìn)程創(chuàng)建在堆中占用200MB的新對(duì)象并保持引用。這些對(duì)象例如可以是基元字節(jié)數(shù)組。然后,使用JNI服務(wù),將對(duì)象固定在內(nèi)存中(例如調(diào)用GetPrimitiveArrayCritical)。最后,例如針對(duì) Linux 調(diào)用具有 MADV_DONTNEEDED 標(biāo)志的madvise系統(tǒng)調(diào)用,將對(duì)應(yīng)的內(nèi)存釋放給OS。
      [0037]使java氣球緊縮-當(dāng)氣球守護(hù)進(jìn)程接收到使java氣球緊縮的請(qǐng)求時(shí),它例如針對(duì)Linux調(diào)用具有MADV_N0RMAL標(biāo)志的madvise系統(tǒng)調(diào)用,從OS回收對(duì)應(yīng)數(shù)量的內(nèi)存。然后守護(hù)進(jìn)程取消固定對(duì)應(yīng)的對(duì)象(例如調(diào)用Re I easePrimi t iveArrayCr i t i cal)。釋放對(duì)對(duì)應(yīng)對(duì)象的引用,同時(shí)允許JVM垃圾收集器找到這些對(duì)象并將它們視為空閑空間。
      [0038]如果JVM不支持長(zhǎng)期固定,則上面的細(xì)節(jié)可能有所變化。例如,如果JVM不支持長(zhǎng)期固定但支持禁用壓縮,則可以啟動(dòng)JVM而沒有壓縮,并且java氣球不會(huì)固定對(duì)象。如果JVM既不支持長(zhǎng)期固定也不支持禁用壓縮,則java氣球不會(huì)固定對(duì)象,也不會(huì)針對(duì)該對(duì)象通知OS。一段時(shí)間之后,java氣球?qū)ο蟊粔嚎s并保持在堆中的恒定位置。OS然后檢測(cè)到未使用對(duì)應(yīng)于java氣球?qū)ο蟮捻?,并將它們換出到磁盤。
      [0039]上面的方法可以適用于其它非JVM環(huán)境和程序,這些環(huán)境和程序?qū)崿F(xiàn)它們自己的內(nèi)存管理,例如使得(I)程序允許在相同內(nèi)存上下文(例如插件)下運(yùn)行模塊/代碼,(2)程序公開接口以便獲得和釋放內(nèi)存,或者(3)程序公開接口以便與外部實(shí)體通信。如果上面的可選條件不存在,則可以將氣球機(jī)制與內(nèi)置的自治策略一起使用以便控制氣球大小。
      [0040]在不同的實(shí)施例中,所要求保護(hù)的主題可以實(shí)現(xiàn)為硬件和軟件元素的組合,或者備選地完全以硬件形式或完全以軟件形式實(shí)現(xiàn)。此外,在此公開的計(jì)算系統(tǒng)和程序軟件可以包括受控計(jì)算環(huán)境,其可以根據(jù)執(zhí)行的硬件組件或邏輯代碼提供,這些硬件組件或邏輯代碼用于執(zhí)行實(shí)現(xiàn)在此構(gòu)想的結(jié)果的方法和過程。當(dāng)由通用計(jì)算系統(tǒng)或機(jī)器執(zhí)行時(shí),所述方法和過程將通用機(jī)器轉(zhuǎn)換為專用機(jī)器。
      [0041]參考圖4A和4B,根據(jù)一個(gè)示例性實(shí)施例的計(jì)算系統(tǒng)環(huán)境可以包括硬件環(huán)境1110和軟件環(huán)境1120。硬件環(huán)境1110可以包括邏輯單元、電路或其它機(jī)器和設(shè)備,它們?yōu)檐浖h(huán)境1120的組件提供執(zhí)行環(huán)境。反過來,軟件環(huán)境1120可以為硬件環(huán)境1110的各種組件提供執(zhí)行指令,包括底層操作設(shè)置和配置。
      [0042]參考圖4A,在此公開的應(yīng)用軟件和邏輯代碼可以以計(jì)算機(jī)可讀代碼的形式實(shí)現(xiàn),計(jì)算機(jī)可讀代碼在由示例性硬件環(huán)境1110表示的一個(gè)或多個(gè)計(jì)算系統(tǒng)上執(zhí)行。如圖所示,硬件環(huán)境1110可以包括處理器1101,其通過系統(tǒng)總線1100耦合到一個(gè)或多個(gè)存儲(chǔ)元件。存儲(chǔ)元件例如可以包括本地存儲(chǔ)器1102、存儲(chǔ)介質(zhì)1106、高速緩沖存儲(chǔ)器1104或其它計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)。在本公開的上下文中,計(jì)算機(jī)可用或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以包括任何可以用于包含、存儲(chǔ)、發(fā)送、傳播或傳輸程序代碼的可記錄制品。
      [0043]計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是電、磁、光、電磁、紅外線或半導(dǎo)體介質(zhì)、系統(tǒng)、裝置或器件。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)還可以以傳播介質(zhì)實(shí)現(xiàn)(但不限于傳播介質(zhì)),直至這種實(shí)現(xiàn)被視為法定主題的程度。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的實(shí)例可以包括半導(dǎo)體或固態(tài)存儲(chǔ)器、磁帶、可移動(dòng)計(jì)算機(jī)盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、硬磁盤、光盤或載波(如果適用)。光盤的當(dāng)前實(shí)例包括光盤-只讀存儲(chǔ)器(⑶-ROM)、光盤-讀/寫(⑶-R/W)、數(shù)字視頻盤(DVD )、高清晰度視頻盤(HD-DVD )或Blue-ray?盤。
      [0044]在一個(gè)實(shí)施例中,處理器1101將可執(zhí)行代碼從存儲(chǔ)介質(zhì)1106加載到本地存儲(chǔ)器1102。高速緩沖存儲(chǔ)器1104通過提供臨時(shí)存儲(chǔ)優(yōu)化處理時(shí)間,這種臨時(shí)存儲(chǔ)有助于減少加載代碼以便執(zhí)行的次數(shù)。一個(gè)或多個(gè)用戶接口設(shè)備1105(例如鍵盤、指點(diǎn)設(shè)備等)和顯示屏1107例如可以直接或通過中間I/O控制器1103耦合到硬件環(huán)境1110中的其它元件??梢蕴峁┩ㄐ沤涌趩卧?108 (例如網(wǎng)絡(luò)適配器),以使硬件環(huán)境1110能夠通過中間專用或公共網(wǎng)絡(luò)(例如因特網(wǎng))與本地或遠(yuǎn)程定位的計(jì)算系統(tǒng)、打印機(jī)和存儲(chǔ)器件通信。有線或無線調(diào)制解調(diào)器和以太網(wǎng)卡是網(wǎng)絡(luò)適配器的幾種示例性類型。
      [0045]值得指出的是,在某些實(shí)現(xiàn)中,硬件環(huán)境1110可能不包括上面的部分或全部組件,或者可能包括額外組件以提供補(bǔ)充功能或效用。取決于構(gòu)想的使用和配置,硬件環(huán)境1110可以是臺(tái)式或膝上型計(jì)算機(jī),或者是可選地包含在嵌入式系統(tǒng)中的其它計(jì)算設(shè)備,例如機(jī)頂盒、個(gè)人數(shù)字助理(PDA)、個(gè)人媒體播放器、移動(dòng)通信單元(例如無線電話),或者是具有信息處理或數(shù)據(jù)存儲(chǔ)能力的其它類似的硬件平臺(tái)。
      [0046]在某些實(shí)施例中,通信接口 1108用作數(shù)據(jù)通信端口,以便通過發(fā)送和接收數(shù)字、電、電磁或光信號(hào)提供與一個(gè)或多個(gè)計(jì)算系統(tǒng)通信的手段,這些信號(hào)承載表示各種類型信息(包括程序代碼)的模擬或數(shù)字?jǐn)?shù)據(jù)流。通信可以通過本地或遠(yuǎn)程網(wǎng)絡(luò)建立,或者備選地通過空氣傳輸或其它介質(zhì)傳輸(包括但不限于載波傳播)建立。
      [0047]如在此所提供的,根據(jù)本質(zhì)上示例性的邏輯或功能關(guān)系定義在所示硬件元素上執(zhí)行的所公開的軟件元素。但是,應(yīng)當(dāng)指出,通過所述示例性軟件元素實(shí)現(xiàn)的相應(yīng)方法還可以例如通過配置和編程的處理器、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)和數(shù)字信號(hào)處理器(DSP)而編碼在所述硬件元素中。
      [0048]參考圖4B,軟件環(huán)境1120通??梢苑譃閮深悾ㄔ谝粋€(gè)或多個(gè)硬件環(huán)境1110上執(zhí)行的系統(tǒng)軟件1121和應(yīng)用軟件1122。在一個(gè)實(shí)施例中,在此公開的方法和過程可以實(shí)現(xiàn)為系統(tǒng)軟件1121、應(yīng)用軟件1122或它們的組合。系統(tǒng)軟件1121可以包括諸如操作系統(tǒng)(OS)或信息管理系統(tǒng)之類的控制程序,它們指示硬件環(huán)境1110中的一個(gè)或多個(gè)處理器1101 (例如微控制器)如何運(yùn)行和處理信息。應(yīng)用軟件1122可以包括但不限于程序代碼、數(shù)據(jù)結(jié)構(gòu)、固件、駐留軟件、微代碼,或者可以由處理器1101讀取、分析或執(zhí)行的任何其它形式的信息或例程。
      [0049]換言之,應(yīng)用軟件1122可以實(shí)現(xiàn)為程序代碼,其以計(jì)算機(jī)可用或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的形式嵌入在計(jì)算機(jī)程序產(chǎn)品中,該介質(zhì)提供程序代碼以便由計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)使用或者與其結(jié)合使用。此外,應(yīng)用軟件1122可以包括一個(gè)或多個(gè)計(jì)算機(jī)程序,這些計(jì)算機(jī)程序在從存儲(chǔ)介質(zhì)1106加載到本地存儲(chǔ)器1102之后,在系統(tǒng)軟件1121之上執(zhí)行。在客戶端-服務(wù)器體系結(jié)構(gòu)中,應(yīng)用軟件1122可以包括客戶端軟件和服務(wù)器軟件。例如,在一個(gè)實(shí)施例中,客戶端軟件可以在客戶端計(jì)算系統(tǒng)上執(zhí)行,該客戶端計(jì)算系統(tǒng)不同于并且獨(dú)立于執(zhí)行服務(wù)器軟件的服務(wù)器計(jì)算系統(tǒng)。
      [0050]軟件環(huán)境1120還可以包括瀏覽器軟件1126以便訪問通過本地或遠(yuǎn)程計(jì)算網(wǎng)絡(luò)提供的數(shù)據(jù)。此外,軟件環(huán)境1120可以包括用戶接口 1124 (例如圖形用戶接口(⑶I))以便接收用戶命令和數(shù)據(jù)。有必要重申,上面描述的硬件和軟件體系結(jié)構(gòu)和環(huán)境用于實(shí)例目的。因此,可以在任何類型的系統(tǒng)體系結(jié)構(gòu)、功能或邏輯平臺(tái)或處理環(huán)境上實(shí)現(xiàn)一個(gè)或多個(gè)實(shí)施例。
      [0051]還應(yīng)當(dāng)理解,邏輯代碼、程序、模塊、過程、方法,以及每種方法的相應(yīng)過程的執(zhí)行順序完全是示例性的。取決于實(shí)現(xiàn),過程或任何底層子過程和方法可以以任何順序執(zhí)行或同時(shí)執(zhí)行,除非本公開中另有所指。此外,除非明確地另有所指,否則本公開的上下文中的邏輯代碼定義并不與任何特定程序設(shè)計(jì)語言相關(guān)或限于任何特定程序設(shè)計(jì)語言,并且可以包括一個(gè)或多個(gè)模塊,它們可以在分布式、非分布式、單處理或多處理環(huán)境中的一個(gè)或多個(gè)處理器上執(zhí)行。
      [0052]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,軟件實(shí)施例可以包括固件、駐留軟件、微代碼等。包括軟件或硬件或者組合軟件和硬件方面的某些組件在此通常可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,所公開的主題可以實(shí)現(xiàn)為包含在一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品,這些介質(zhì)在其中包含計(jì)算機(jī)可讀程序代碼??梢允褂靡粋€(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的任意組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于一電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者上述的任意合適的組合。
      [0053]在此文檔的上下文中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何能夠包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。計(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é)合使用的程序。
      [0054]計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、有線、光纜、RF等等,或者上述的任意合適的組合。可以以一種或多種程序設(shè)計(jì)語言的任意組合來編寫用于執(zhí)行所公開的操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語目一諸如Java、Smalltalk、C++等,還包括常規(guī)的過程式程序設(shè)計(jì)語言一諸如“C”語言或類似的程序設(shè)計(jì)語言。
      [0055]程序代碼可以完全地在用戶計(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ù)提供商來通過因特網(wǎng)連接)。[0056]將參考根據(jù)實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖公開某些實(shí)施例。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用機(jī)器或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些指令在通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。
      [0057]也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,這些指令使得計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備以特定方式工作,從而,存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的指令就產(chǎn)生出包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的指令的制造品(article of manufacture)。
      [0058]也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令提供實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的過程。
      [0059]附圖中的流程圖和框圖顯示了根據(jù)不同實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系結(jié)構(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ā)生。
      [0060]例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
      [0061]在此參考一個(gè)或多個(gè)特性或?qū)嵤├峁┝怂蟊Wo(hù)的主題。所屬【技術(shù)領(lǐng)域】的技術(shù)人員將認(rèn)識(shí)到并知道,盡管在此提供了示例性實(shí)施例的詳細(xì)性質(zhì),但是可以向所述實(shí)施例應(yīng)用更改和修改而不會(huì)限制或偏離原本預(yù)期的范圍。在此提供的實(shí)施例的這些和各種其它改變和組合,均在權(quán)利要求及其全部等效物限定的所公開的主題的范圍之內(nèi)。
      【權(quán)利要求】
      1.一種虛擬化計(jì)算環(huán)境中的內(nèi)存管理方法,其中系統(tǒng)管理程序在主機(jī)上至少實(shí)現(xiàn)一虛擬機(jī)“VM”,其中在所述VM上執(zhí)行來賓操作系統(tǒng)“OS”,并且在所述來賓OS上執(zhí)行支持內(nèi)存管理能力的應(yīng)用,所述方法包括: 響應(yīng)于所述系統(tǒng)管理程序提交的請(qǐng)求,調(diào)用由所述應(yīng)用實(shí)現(xiàn)的第一內(nèi)存管理器“java氣球”,以取消分配被分配給所述應(yīng)用的內(nèi)存以便供所述系統(tǒng)管理程序使用;以及 響應(yīng)于所述系統(tǒng)管理程序提交的請(qǐng)求,調(diào)用在所述來賓操作系統(tǒng)上實(shí)現(xiàn)的第二內(nèi)存管理器“來賓氣球”,以取消分配被分配給所述來賓OS的內(nèi)存。
      2.根據(jù)權(quán)利要求1的方法,其中調(diào)用所述第一內(nèi)存管理器包括從分配給所述應(yīng)用的內(nèi)存空間獲得內(nèi)存。
      3.根據(jù)權(quán)利要求2的方法,其中調(diào)用所述第一內(nèi)存管理器進(jìn)一步包括保持對(duì)從分配給所述應(yīng)用的所述內(nèi)存空間獲得的內(nèi)存的引用。
      4.根據(jù)權(quán)利要求3的方法,其中調(diào)用所述第一內(nèi)存管理器進(jìn)一步包括監(jiān)視是否可以將分配給與所述第一內(nèi)存管理器“java氣球”關(guān)聯(lián)的第一內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)的內(nèi)存釋放給所述來賓OS。
      5.根據(jù)權(quán)利要求4的方法,還包括將分配給與所述第一內(nèi)存管理器“java氣球”關(guān)聯(lián)的所述第一內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)的內(nèi)存釋放給所述來賓OS。
      6.根據(jù)權(quán)利要求4的方法,還包括調(diào)用所述第二內(nèi)存管理器“來賓氣球”以便從所述來賓OS獲得內(nèi)存。
      7.根據(jù)權(quán)利要求1的方法,其中調(diào)用所述第二內(nèi)存管理器“來賓氣球”包括調(diào)用所述來賓OS以便從分配給所述第一內(nèi)存管理器“java氣球”的內(nèi)存來將內(nèi)存返回給所述應(yīng)用。
      8.根據(jù)權(quán)利要求 7的方法,還包括監(jiān)視所述第一內(nèi)存管理器“java氣球”是否已將內(nèi)存釋放給所述來賓OS。
      9.根據(jù)權(quán)利要求8的方法,其中如果所述第一內(nèi)存管理器“java氣球”已將內(nèi)存釋放給所述來賓OS,則從來賓OS再次獲得內(nèi)存釋放。
      10.根據(jù)權(quán)利要求9的方法,還包括:所述第一內(nèi)存管理器“java氣球”釋放對(duì)分配給與所述第一內(nèi)存管理器關(guān)聯(lián)的對(duì)象的內(nèi)存的引用,使得所述應(yīng)用可以使用關(guān)聯(lián)的內(nèi)存空間。
      11.一種虛擬化計(jì)算環(huán)境中的內(nèi)存管理系統(tǒng),其中系統(tǒng)管理程序在主機(jī)上至少實(shí)現(xiàn)一虛擬機(jī)“VM”,其中在所述VM上執(zhí)行來賓操作系統(tǒng)“OS”,并且在所述來賓OS上執(zhí)行支持內(nèi)存管理能力的應(yīng)用,所述系統(tǒng)包括: 一邏輯單元,其用于響應(yīng)于所述系統(tǒng)管理程序提交的請(qǐng)求,調(diào)用由所述應(yīng)用實(shí)現(xiàn)的第一內(nèi)存管理器,以取消分配被分配給所述應(yīng)用的內(nèi)存以便供所述系統(tǒng)管理程序使用;以及 一邏輯單元,其用于響應(yīng)于所述系統(tǒng)管理程序提交的請(qǐng)求,調(diào)用在所述來賓操作系統(tǒng)上實(shí)現(xiàn)的第二內(nèi)存管理器,以取消分配被分配給所述來賓OS的內(nèi)存。
      12.根據(jù)權(quán)利要求11的系統(tǒng),其中調(diào)用所述第一內(nèi)存管理器包括從分配給所述應(yīng)用的內(nèi)存空間獲得內(nèi)存。
      13.根據(jù)權(quán)利要求12的系統(tǒng),其中調(diào)用所述第一內(nèi)存管理器進(jìn)一步包括保持對(duì)從分配給所述應(yīng)用的所述內(nèi)存空間獲得的內(nèi)存的引用。
      14.根據(jù)權(quán)利要求13的系統(tǒng),其中調(diào)用所述第一內(nèi)存管理器進(jìn)一步包括監(jiān)視是否可以將分配給與所述第一內(nèi)存管理器關(guān)聯(lián)的第一內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)的內(nèi)存釋放給所述來賓OS。
      15.根據(jù)權(quán)利要求14的系統(tǒng),還包括將分配給與所述第一內(nèi)存管理器關(guān)聯(lián)的所述第一內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)的內(nèi)存釋放給所述來賓OS。
      16.根據(jù)權(quán)利要求14的系統(tǒng),還包括調(diào)用所述第二內(nèi)存管理器以便從所述來賓OS獲得內(nèi)存。
      17.根據(jù)權(quán)利要求11的系統(tǒng),其中調(diào)用所述第二內(nèi)存管理器包括調(diào)用所述來賓OS以便從分配給所述第一內(nèi)存管理器的內(nèi)存來將內(nèi)存返回給所述應(yīng)用。
      18.根據(jù)權(quán)利要求17的系統(tǒng),還包括監(jiān)視所述第一內(nèi)存管理器“java氣球”是否已將內(nèi)存釋放給所述來賓OS。
      19.根據(jù)權(quán)利要求18的系統(tǒng),其中如果所述第一內(nèi)存管理器已將內(nèi)存釋放給所述來賓OS,則從來賓OS再次獲得內(nèi)存釋放。
      20.根據(jù)權(quán)利要求19的系統(tǒng),還包括:所述第一內(nèi)存管理器釋放對(duì)分配給與所述第一內(nèi)存管理器關(guān)聯(lián)的對(duì)象的內(nèi)存的引用,使得所述應(yīng)用可以使用關(guān)聯(lián)的內(nèi)存空間。
      21.一種包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)具有計(jì)算機(jī)可讀程序,其中提供一種虛擬化計(jì)算環(huán)境中的內(nèi)存管理系統(tǒng),其中系統(tǒng)管理程序在主機(jī)上至少實(shí)現(xiàn)一虛擬機(jī)“VM”,其中在所述VM上執(zhí)行來賓操作系統(tǒng)“OS”,并且在所述來賓OS上執(zhí)行支持內(nèi)存管理能力的應(yīng)用,并且其中當(dāng)在計(jì)算機(jī)上執(zhí)行時(shí),所述計(jì)算機(jī)可讀程序?qū)е滤鲇?jì)算機(jī)執(zhí)行以下操作: 響應(yīng)于所述系統(tǒng)管理程序提交的請(qǐng)求,調(diào)用由所述應(yīng)用實(shí)現(xiàn)的第一內(nèi)存管理器,以取消分配被分配給所述應(yīng)用的內(nèi)存以便供所述系統(tǒng)管理程序使用;以及 響應(yīng)于所述系統(tǒng)管理程序提交的請(qǐng)求,調(diào)用在所述來賓操作系統(tǒng)上實(shí)現(xiàn)的第二內(nèi)存管理器,以取消分配被分配給所 述來賓OS的內(nèi)存。
      22.根據(jù)權(quán)利要求21的計(jì)算機(jī)程序產(chǎn)品,其中調(diào)用所述第一內(nèi)存管理器包括從分配給所述應(yīng)用的內(nèi)存空間獲得內(nèi)存。
      23.根據(jù)權(quán)利要求22的計(jì)算機(jī)程序產(chǎn)品,其中調(diào)用所述第一內(nèi)存管理器進(jìn)一步包括保持對(duì)從分配給所述應(yīng)用的所述內(nèi)存空間獲得的內(nèi)存的引用。
      24.根據(jù)權(quán)利要求23的計(jì)算機(jī)程序產(chǎn)品,其中調(diào)用所述第一內(nèi)存管理器進(jìn)一步包括監(jiān)視是否可以將分配給與所述第一內(nèi)存管理器關(guān)聯(lián)的第一內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)的內(nèi)存釋放給所述來賓OS。
      25.根據(jù)權(quán)利要求24的計(jì)算機(jī)程序產(chǎn)品,其中將分配給與所述第一內(nèi)存管理器關(guān)聯(lián)的所述第一內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)的內(nèi)存釋放給所述來賓OS。
      【文檔編號(hào)】G06F12/08GK103430159SQ201280013030
      【公開日】2013年12月4日 申請(qǐng)日期:2012年3月9日 優(yōu)先權(quán)日:2011年3月13日
      【發(fā)明者】A·戈登, M·希奈斯, D·M·達(dá)席爾瓦, S·本耶胡達(dá) 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1