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

一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的方法和系統(tǒng)的制作方法

文檔序號(hào):6357379閱讀:160來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及計(jì)算機(jī)應(yīng)用程序的運(yùn)行,更具體地,涉及一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的方法和系統(tǒng)。
背景技術(shù)
云計(jì)算是一種新興的網(wǎng)絡(luò)服務(wù)模式,IDC的一份分析報(bào)告指出,2009年全球3590億美元的IT支出中有170億美元出自云計(jì)算投資。其它調(diào)查也表明,有三分之二的企業(yè)計(jì)劃擴(kuò)展對(duì)于公有云的使用。 “多租戶”架構(gòu)(Multi-tenancy)是云計(jì)算中最重要的體系架構(gòu),“多租戶”借鑒和發(fā)展了很多主機(jī)計(jì)算的概念,并把這些概念帶到了 x86服務(wù)器的生態(tài)系統(tǒng)中,而且對(duì)原來(lái)的概念進(jìn)行很多延展,以支持?jǐn)?shù)以千計(jì)的企業(yè)內(nèi)和企業(yè)外的“租戶”。這種“租戶”可以是任何企業(yè)中的任何一個(gè)應(yīng)用程序(既可以是企業(yè)內(nèi)部也可以是企業(yè)外部),這個(gè)應(yīng)用程序有自己的安全需求和專(zhuān)用虛擬計(jì)算環(huán)境,這個(gè)環(huán)境可能包含企業(yè)IT架構(gòu)中的幾層或者全部,從存儲(chǔ)到用戶界面。實(shí)際上,所有的交互式應(yīng)用在本質(zhì)上應(yīng)該都是面向多用戶或者說(shuō)是“多租戶”的。“多租戶”簡(jiǎn)言之就是一個(gè)單獨(dú)的軟件實(shí)例可以為多個(gè)組織(或者說(shuō)用戶)服務(wù)。一個(gè)支持多租戶的軟件需要在設(shè)計(jì)上能夠使得每個(gè)使用這個(gè)軟件的組織能使用到一個(gè)單獨(dú)的虛擬實(shí)例,并且可以對(duì)這個(gè)虛擬實(shí)例進(jìn)行定制化。多租戶的優(yōu)點(diǎn)在于通過(guò)一個(gè)軟件實(shí)例被多個(gè)組織共享,從而減低了整體資源的消耗,也同時(shí)減低應(yīng)用運(yùn)行的成本;另外,由于,所有組織都共享同一套核心代碼,所以能夠讓軟件更新和開(kāi)發(fā)更簡(jiǎn)單;此外,通過(guò)使用了多租戶架構(gòu)能減少物理資源和軟件資源,能夠簡(jiǎn)化管理、提高效率。在一些云計(jì)算環(huán)境中,為了滿足多租戶(用戶)安全/隔離的需求,云計(jì)算環(huán)境的管理員需要為每一個(gè)用戶創(chuàng)建應(yīng)用程序的一個(gè)單獨(dú)的實(shí)例。盡管應(yīng)用程序的多個(gè)實(shí)例都是運(yùn)行在相同的基礎(chǔ)代碼之上,但是,目前卻很難利用這些相同的基礎(chǔ)代碼,造成不必要的資源消耗,例如多次載入相同的代碼占用的內(nèi)存空間;另外在應(yīng)用程序的不同實(shí)例中,使用了相同的全局?jǐn)?shù)據(jù)結(jié)構(gòu),又造成重復(fù)占用了數(shù)據(jù)存儲(chǔ)空間,等等。在現(xiàn)有的“多租戶”體系結(jié)構(gòu)中,例如對(duì)于Java應(yīng)用程序,是通過(guò)復(fù)制JVM來(lái)解決這個(gè)問(wèn)題,該方法是通過(guò)復(fù)制現(xiàn)有的JVM,來(lái)重新啟動(dòng)一個(gè)新的復(fù)制的JVM,共享內(nèi)存頁(yè),并且在復(fù)制的JVM中再運(yùn)行另一相同的Java應(yīng)用程序。但是上述的方法是在進(jìn)程級(jí)別的共享,共享的粒度較粗,節(jié)省的空間有限。

發(fā)明內(nèi)容
因此,需要一種新的運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的方法和系統(tǒng),來(lái)節(jié)省應(yīng)用程序占用的存儲(chǔ)空間。根據(jù)本發(fā)明的一個(gè)方面,提供了一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的方法,該方法包括
開(kāi)始運(yùn)行所述應(yīng)用程序的根實(shí)例,該根實(shí)例包含至少一個(gè)線程;響應(yīng)于所述根實(shí)例的一個(gè)線程運(yùn)行到應(yīng)用程序中預(yù)先設(shè)置的凍結(jié)點(diǎn),停止所述根實(shí)例的全部線程的運(yùn)行;響應(yīng)于開(kāi)始運(yùn)行該應(yīng)用程序的一個(gè)實(shí)例,復(fù)制所述根實(shí)例的全部線程的運(yùn)行狀態(tài)作為該實(shí)例的全部線程的運(yùn)行狀態(tài);以及繼續(xù)運(yùn)行該應(yīng)用程序的所述實(shí)例的全部線程。根據(jù)本發(fā)明的另一個(gè)方面提供了一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的系統(tǒng),該系統(tǒng)包括根實(shí)例啟動(dòng)裝置,被配置為開(kāi)始運(yùn)行所述應(yīng)用程序的根實(shí)例,該根實(shí)例包含至少一個(gè)線程; 根實(shí)例停止裝置,被配置為響應(yīng)于所述根實(shí)例的一個(gè)線程運(yùn)行到應(yīng)用程序中預(yù)先設(shè)置的凍結(jié)點(diǎn),停止所述根實(shí)例的全部線程的運(yùn)行;復(fù)制裝置,被配置為響應(yīng)于開(kāi)始運(yùn)行該應(yīng)用程序的一個(gè)實(shí)例,復(fù)制所述根實(shí)例的全部線程的運(yùn)行狀態(tài)作為該實(shí)例的全部線程的運(yùn)行狀態(tài);以及繼續(xù)運(yùn)行裝置,被配置為繼續(xù)運(yùn)行該應(yīng)用程序的所述實(shí)例的全部線程。


通過(guò)對(duì)附圖中本發(fā)明示例實(shí)施例方式的更詳細(xì)描述,本發(fā)明的上述、以及其它目的、特征和優(yōu)勢(shì)將變得更加明顯,其中,相同的參考標(biāo)號(hào)通常代表本發(fā)明示例實(shí)施例方式中的相同部件。圖I示出了根據(jù)本發(fā)明的一種實(shí)施方式的一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的方法的流程;圖2以Java語(yǔ)言為例示例性地進(jìn)一步闡述了運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的方法;圖3示出了實(shí)例進(jìn)行寫(xiě)操作的過(guò)程;圖4示出了另一種實(shí)例進(jìn)行寫(xiě)操作的過(guò)程;以及圖5示意性示出了一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施例方式將參照附圖更加詳細(xì)地描述本發(fā)明的優(yōu)選實(shí)施方式,在附圖中顯示了本發(fā)明的優(yōu)選實(shí)施例。然而,本發(fā)明可以以各種形式實(shí)現(xiàn)而不應(yīng)該理解為被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了使本發(fā)明更加透徹和完整,并且,完全將本發(fā)明的范圍傳達(dá)給本領(lǐng)域的技術(shù)人員。程序設(shè)計(jì)人員一般把正在計(jì)算機(jī)中執(zhí)行的程序叫做進(jìn)程(Process),每一個(gè)進(jìn)程都有自己獨(dú)立的內(nèi)存空間。例如對(duì)于IE瀏覽器程序,每打開(kāi)一個(gè)IE瀏覽器窗口,就啟動(dòng)了一個(gè)IE瀏覽器進(jìn)程。而線程(Thread),是指進(jìn)程中的一個(gè)執(zhí)行流程,有時(shí)也稱(chēng)為執(zhí)行情景。一個(gè)進(jìn)程可以由多個(gè)線程組成,即在一個(gè)進(jìn)程中可以同時(shí)運(yùn)行多個(gè)不同的線程,它們分別執(zhí)行不同的任務(wù)。當(dāng)進(jìn)程內(nèi)的多個(gè)線程同時(shí)運(yùn)行,這種運(yùn)行方式稱(chēng)為并發(fā)運(yùn)行。線程與進(jìn)程的主要區(qū)別在于每個(gè)進(jìn)程都需要操作系統(tǒng)為其分配獨(dú)立的內(nèi)存地址空間,而同一進(jìn)程中的所有線程在同一塊地址空間中工作,這些線程可以共享同一塊內(nèi)存和系統(tǒng)資源,t匕如共享一個(gè)對(duì)象或者共享已經(jīng)打開(kāi)的一個(gè)文件。現(xiàn)有的操作系統(tǒng),如Mac、Windows等,一般都采用多線程的概念,把線程視為基本執(zhí)行單位。在現(xiàn)有的云計(jì)算環(huán)境中,為了實(shí)現(xiàn)多租戶的體系結(jié)構(gòu),對(duì)于諸如Java語(yǔ)言之類(lèi)的應(yīng)用程序,是通過(guò)復(fù)制虛擬機(jī),再在復(fù)制的虛擬機(jī)中運(yùn)行另一份相同的應(yīng)用程序,虛擬機(jī)是一個(gè)進(jìn)程,復(fù)制的虛擬機(jī)進(jìn)程與原來(lái)的虛擬機(jī)進(jìn)程可以共享一些內(nèi)存頁(yè),內(nèi)存頁(yè)在內(nèi)存中是較大的存儲(chǔ)單位,因此這種共享的粒度很粗,節(jié)省的存儲(chǔ)空間有限。另外,在很多場(chǎng)景下,經(jīng)常需要運(yùn)行一個(gè)應(yīng)用程序的多個(gè)實(shí)例(Instance),實(shí)例是指一個(gè)應(yīng)用程序的一次運(yùn)行,例如運(yùn)行多個(gè)Eclipse實(shí)例,指運(yùn)行Eclipse應(yīng)用程序多次;或者運(yùn)行多個(gè)Java應(yīng)用程序的實(shí)例,指在Java虛擬機(jī)進(jìn)程中運(yùn)行該Java應(yīng)用程序多次等等,實(shí)例本是是一個(gè)虛的概念,并沒(méi)有程序上的實(shí)體與之對(duì)應(yīng),一個(gè)實(shí)例可能包含多個(gè)線程,如果多個(gè)實(shí)例運(yùn)行在一個(gè)進(jìn)程中,這些實(shí)例間是可以共享內(nèi)存空間的。每個(gè)實(shí)例可能包含多個(gè)線程,目前多租戶解決方案中只有虛擬機(jī)進(jìn)程級(jí)別的復(fù)制,即進(jìn)程間共享內(nèi)存頁(yè),但 是,多個(gè)實(shí)例包含的多個(gè)線程之間沒(méi)有共享,而這些實(shí)例內(nèi)部的多個(gè)線程都有大量的相似性,但是由于各實(shí)例進(jìn)程之間的存儲(chǔ)空間是獨(dú)立的,使用進(jìn)程共享,內(nèi)存頁(yè)常常因?yàn)槲⑿〉牟町惗荒芄蚕?,共享的粒度過(guò)粗,浪費(fèi)了大量的應(yīng)用程序運(yùn)行空間。因此,本發(fā)明考慮到可以在云計(jì)算環(huán)境中,采用運(yùn)行多個(gè)應(yīng)用程序?qū)嵗姆绞絹?lái)實(shí)現(xiàn)多租戶的體系結(jié)構(gòu),并且對(duì)于該應(yīng)用程序中的多個(gè)實(shí)例的重復(fù)的數(shù)據(jù)結(jié)構(gòu)共享,來(lái)節(jié)省該應(yīng)用程序運(yùn)行的空間。本發(fā)明提出一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的方法,本領(lǐng)域技術(shù)人員通過(guò)對(duì)方法過(guò)程的描述,可以知道,這種方法對(duì)于使用面向?qū)ο蟮恼Z(yǔ)言,運(yùn)行在虛擬機(jī)之上的應(yīng)用程序都是適用的,這種應(yīng)用程序有很多種,例如Java語(yǔ)言的應(yīng)用程序,可以運(yùn)行在Java的虛擬機(jī)(JVM)之上,Ruby語(yǔ)言的應(yīng)用程序,可以運(yùn)行在Ruby的虛擬機(jī)之上,以及Python語(yǔ)言的應(yīng)用程序,可以運(yùn)行在Python的虛擬機(jī)之上,C#語(yǔ)言的應(yīng)用程序,可以運(yùn)行在C#的虛擬機(jī)之
h坐坐
I . 9 -T^ O圖I示出了根據(jù)本發(fā)明的一種實(shí)施方式的一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的方法的流程,根據(jù)圖1,在步驟S101,開(kāi)始運(yùn)行所述應(yīng)用程序的根實(shí)例,該根實(shí)例包含至少一個(gè)線程,這里的根實(shí)例可以理解為應(yīng)用程序的首次運(yùn)行;在步驟S102,判斷所述應(yīng)用程序的根實(shí)例的一個(gè)線程是否運(yùn)行到凍結(jié)點(diǎn),凍結(jié)點(diǎn)將在后面詳細(xì)討論,如果沒(méi)有,繼續(xù)等待,如果是,在步驟S103,響應(yīng)于所述根實(shí)例的一個(gè)線程運(yùn)行到應(yīng)用程序中預(yù)先設(shè)置的凍結(jié)點(diǎn),停止所述根實(shí)例的全部線程的運(yùn)行;優(yōu)選地,在步驟S104,可以標(biāo)注所述根實(shí)例中的根實(shí)例對(duì)象的屬性為只讀,標(biāo)注該根實(shí)例對(duì)象的屬性為只讀是為了防止后續(xù)的寫(xiě)操作修改根實(shí)例對(duì)象,實(shí)際上,從后續(xù)的處理方法中可以看出,當(dāng)涉及寫(xiě)操作時(shí),并沒(méi)有直接修改根實(shí)例對(duì)象的域的操作,因此,這種標(biāo)注只是為了防止誤操作,是一種優(yōu)選的實(shí)施方式;在步驟S105,判斷是否要運(yùn)行所述應(yīng)用程序的一個(gè)實(shí)例的全部線程,這里的一個(gè)實(shí)例可以理解為
應(yīng)用程序的第二次、第三次......的運(yùn)行,即應(yīng)用程序的非首次的一次運(yùn)行,如果不是,繼
續(xù)等待;如果是,在步驟S106響應(yīng)于開(kāi)始運(yùn)行該應(yīng)用程序的一個(gè)實(shí)例,復(fù)制所述根實(shí)例的全部線程的運(yùn)行狀態(tài)作為該實(shí)例的全部線程的運(yùn)行狀態(tài);在復(fù)制的全部線程的運(yùn)行狀態(tài)的基礎(chǔ)上,在步驟S107,繼續(xù)運(yùn)行該應(yīng)用程序的所述實(shí)例的全部線程。上述方法與現(xiàn)有技術(shù)中的復(fù)制JVM的多租戶實(shí)施方式相比,僅僅復(fù)制根實(shí)例的所有線程的運(yùn)行狀態(tài),復(fù)制的粒度更小,內(nèi)容更少,從而節(jié)省更多的程序運(yùn)行空間。圖2以Java語(yǔ)言為例示例性地進(jìn)一步闡述了運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的方法,本領(lǐng)域及使人員可以知道,雖然這種方法是以Java語(yǔ)言為例陳述的,但是可以換成任何一種其它的使用面向?qū)ο蟮恼Z(yǔ)言,運(yùn)行在虛擬機(jī)之上的應(yīng)用程序。在圖2中,整個(gè)應(yīng)用程序作為一個(gè)進(jìn)程,是運(yùn)行在Java虛擬機(jī)之上的,JVM本身也包含了很多線程,圖2的JVM線程只是示例性的,表明下述應(yīng)用程序的一個(gè)運(yùn)行環(huán)境。應(yīng)用程序在多租戶體系結(jié)構(gòu)下,根據(jù)上述方法,在Java虛擬機(jī)之上的運(yùn)行可以分為兩個(gè)階段,第一階段是根實(shí)例的運(yùn)行,根據(jù)圖2,假設(shè)一個(gè)實(shí)例包含了三個(gè)線程,首先運(yùn)行根實(shí)例,一般來(lái)說(shuō),一個(gè)應(yīng)用程序的實(shí)例通常由一個(gè)主線程開(kāi)始運(yùn)行。主線程可以創(chuàng)建更多的線程(即子線程),而子線程又可以創(chuàng)建自己的子線程。這些線程的創(chuàng)建都由程序員編寫(xiě)的代碼控制的。當(dāng)運(yùn)行到一定的程度時(shí),停止根實(shí)例所有線程的運(yùn)行,這里程之為凍結(jié)點(diǎn),凍結(jié)點(diǎn)設(shè)置的方式可以是調(diào)用一個(gè)虛擬機(jī)提供的特殊的指令或函數(shù)。通常一個(gè)程序只需設(shè)置一個(gè)凍結(jié)點(diǎn),并且只會(huì)被執(zhí)行一次。當(dāng)程序的某個(gè)線程最先執(zhí)行到凍結(jié)點(diǎn)時(shí),虛擬機(jī)就會(huì)收到該特殊指令或函數(shù)的調(diào)用,然后立刻開(kāi)始執(zhí)行凍結(jié)操作,即暫停應(yīng)用程序所有線程的運(yùn)行。凍結(jié)點(diǎn)一般可以由程序員在編制程序 時(shí)根據(jù)其對(duì)程序的理解來(lái)設(shè)定,位于程序的內(nèi)部,因此,不同程序員編制的相同功能的程序可能由于凍結(jié)點(diǎn)位置設(shè)置的不同,節(jié)省的存儲(chǔ)空間不同。未來(lái)技術(shù)發(fā)展,人工智能技術(shù)達(dá)到一定的程度,可能會(huì)由編程工具自動(dòng)設(shè)定凍結(jié)點(diǎn)。自動(dòng)設(shè)定該凍結(jié)點(diǎn)一般可以采用如下原貝U,在凍結(jié)點(diǎn),所述根實(shí)例的全部線程打開(kāi)的本地句柄數(shù)量最少,并且所述實(shí)例的活動(dòng)線程的數(shù)量最少。這里本地句柄包括文件句柄、網(wǎng)絡(luò)句柄等等。根實(shí)例運(yùn)行到凍結(jié)點(diǎn),其全部線程就不再運(yùn)行了,這時(shí)優(yōu)選地可以標(biāo)注所述根實(shí)例中的根實(shí)例對(duì)象的屬性為只讀,然后就可以將根實(shí)例的全部線程的運(yùn)行狀態(tài)作為在第二階段運(yùn)行其它實(shí)例的全部線程的復(fù)制基礎(chǔ)。標(biāo)注根實(shí)例對(duì)象的方式可以有多種,例如使用標(biāo)志位,該標(biāo)志位為0時(shí),根實(shí)例中的全部對(duì)象的屬性為只讀,否則可讀寫(xiě),或者使用鎖定等方式。在第二階段,開(kāi)始其它實(shí)例的全部線程的運(yùn)行,對(duì)于第一實(shí)例的全部線程的運(yùn)行,首先復(fù)制所述根實(shí)例的全部線程的運(yùn)行狀態(tài)作為該實(shí)例的全部線程的運(yùn)行狀態(tài),全部線程的運(yùn)行狀態(tài)也就是全部線程對(duì)象本身的數(shù)據(jù)結(jié)構(gòu),至少包括線程當(dāng)前的棧、寄存器的值、以及當(dāng)前的指令。在線程當(dāng)前的棧內(nèi),可能包含了很多信息,至少包含了該實(shí)例對(duì)象的引用,該引用可以是一個(gè)指針,在對(duì)該指針初始化時(shí),將其指向所述根實(shí)例對(duì)象。這樣,就將根實(shí)例的運(yùn)行環(huán)境和數(shù)據(jù)都復(fù)制過(guò)來(lái)。顯然,復(fù)制的根實(shí)例內(nèi)容與一個(gè)應(yīng)用程序的運(yùn)行環(huán)境復(fù)制相比,需要復(fù)制的粒度小,內(nèi)容少;另外還可以減少一個(gè)新的實(shí)例的啟動(dòng)時(shí)間。這樣,當(dāng)?shù)诙?shí)例以及第三實(shí)例開(kāi)始運(yùn)行時(shí),仍然從根實(shí)例復(fù)制全部線程的運(yùn)行狀態(tài),然后繼續(xù)運(yùn)行。實(shí)例的全部線程運(yùn)行過(guò)程中,可能要對(duì)線程中對(duì)象的域進(jìn)行訪問(wèn)操作,包括讀操作和寫(xiě)操作,這里首先考慮寫(xiě)操作的過(guò)程。圖3示出了一種實(shí)例進(jìn)行寫(xiě)操作的過(guò)程,根據(jù)圖3,在步驟S301,接收對(duì)所述該應(yīng)用程序的所述實(shí)例對(duì)象的域的寫(xiě)操作;在步驟S302,判斷對(duì)該寫(xiě)操作是否為實(shí)例對(duì)象的首次寫(xiě)操作?由于在首次寫(xiě)操作前,在線程當(dāng)前的棧內(nèi)該實(shí)例對(duì)象的引用初始化是指向所述根實(shí)例對(duì)象,如果確定為首次寫(xiě)操作,即響應(yīng)于所述實(shí)例對(duì)象的引用指向所述根實(shí)例對(duì)象,在步驟S303,為所述實(shí)例對(duì)象分配存儲(chǔ)區(qū);在步驟S304,將所述當(dāng)前的棧內(nèi)包括的實(shí)例對(duì)象的引用指向?yàn)樗鰧?shí)例對(duì)象分配的存儲(chǔ)區(qū);在步驟S305,在所述存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作,這里步驟S303和S305有前后關(guān)系,步驟S304與步驟S303和S305沒(méi)有特定的前后關(guān)系,步驟S304可以在步驟S303和S305之前、之后或者之間。如果在步驟S302確定不是實(shí)例對(duì)象的首次寫(xiě)操作,也就是說(shuō),所述當(dāng)前的棧內(nèi)包括的對(duì)所述實(shí)例對(duì)象的引用已經(jīng)不指向所述根實(shí)例對(duì)象,而是已經(jīng)指向?yàn)樗鰧?shí)例對(duì)象分配的存儲(chǔ)區(qū),即響應(yīng)于所述實(shí)例對(duì)象的引用不指向所述根實(shí)例對(duì)象,就可以直接跳到步驟S305。對(duì)于線程中對(duì)象的域進(jìn)行的讀操作,可以直接訪問(wèn)所述實(shí)例的全部線程的運(yùn)行狀態(tài)的當(dāng)前的棧內(nèi)包括的對(duì)所述實(shí)例對(duì)象的引用指向的區(qū)域,如果沒(méi)有進(jìn)行過(guò)寫(xiě)操作,就讀出根實(shí)例對(duì)象的域的值,如果已經(jīng)進(jìn)行過(guò)寫(xiě)操作,就讀出為所述實(shí)例對(duì)象分配的存儲(chǔ)區(qū)中對(duì)象的域的值。由上述方案可以看出,使用上述訪問(wèn)操作,實(shí)例對(duì)象的屬性,也就是數(shù)據(jù)占用的存儲(chǔ)空間進(jìn)一步減少,當(dāng)沒(méi)有數(shù)據(jù)更新,也就是沒(méi)有發(fā)生過(guò)實(shí)例對(duì)象的屬性的寫(xiě)操作,讀操作都是指向根實(shí)例對(duì)象的屬性,無(wú)須復(fù)制實(shí)例對(duì)象的屬性,也能夠進(jìn)一步減少數(shù)據(jù)存儲(chǔ)空間。圖4示出了另一種實(shí)例進(jìn)行寫(xiě)操作的過(guò)程,根據(jù)圖4,在步驟S401,接收對(duì)所述實(shí) 例對(duì)象的域的寫(xiě)操作;在步驟S402,判斷所述實(shí)例對(duì)象的引用指向的所述根實(shí)例對(duì)象的對(duì)應(yīng)域是否被標(biāo)記為未執(zhí)行過(guò)寫(xiě)操作,響應(yīng)于所述實(shí)例對(duì)象的引用指向的所述根實(shí)例對(duì)象的對(duì)應(yīng)域被標(biāo)記為未執(zhí)行過(guò)寫(xiě)操作,在步驟S403,為所述寫(xiě)操作相關(guān)的實(shí)例對(duì)象的域分配存儲(chǔ)區(qū);在這種方式中,并不象圖3所示的實(shí)施方式那樣,為整個(gè)對(duì)象分配存儲(chǔ)區(qū)域,而是僅僅為對(duì)象中需要修改的域分配存儲(chǔ)區(qū)域,對(duì)象中的域只是對(duì)象的一小部分,占用的存儲(chǔ)空間遠(yuǎn)遠(yuǎn)小于對(duì)象占用的存儲(chǔ)空間,這樣可以更進(jìn)一步節(jié)省實(shí)例的數(shù)據(jù)存儲(chǔ)空間;在步驟S404,標(biāo)記所述實(shí)例對(duì)象的引用指向的所述根實(shí)例對(duì)象的對(duì)應(yīng)域?yàn)閳?zhí)行過(guò)寫(xiě)操作;在步驟S405,在所述分配的存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。這種標(biāo)記方式可以采用很多種方式,例如使用變量的不同值代表不同的含義,或者還可以使用虛擬機(jī)進(jìn)行標(biāo)記,等等。這里步驟S403和S405有前后關(guān)系,步驟S404與步驟S403和S405沒(méi)有特定的前后關(guān)系,步驟S404可以在步驟S403和S405之前、之后或者之間。當(dāng)判斷所述實(shí)例對(duì)象的引用指向的所述根實(shí)例對(duì)象的對(duì)應(yīng)域被標(biāo)記為執(zhí)行過(guò)寫(xiě)操作,也就是說(shuō),已經(jīng)為寫(xiě)操作相關(guān)的實(shí)例對(duì)象的域分配過(guò)存儲(chǔ)區(qū),這時(shí),在步驟S406,響應(yīng)于所述實(shí)例對(duì)象的引用指向的所述根實(shí)例對(duì)象的對(duì)應(yīng)域被標(biāo)記為執(zhí)行過(guò)寫(xiě)操作,在所述寫(xiě)操作相關(guān)的實(shí)例對(duì)象的域分配的存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。對(duì)于線程中對(duì)象的域進(jìn)行的讀操作,可以直接訪問(wèn)所述實(shí)例的線程的運(yùn)行狀態(tài)的當(dāng)前的棧內(nèi)包括的對(duì)所述實(shí)例對(duì)象的引用指向的區(qū)域,如果沒(méi)有進(jìn)行過(guò)寫(xiě)操作,就讀根實(shí)例對(duì)象的域的值,如果已經(jīng)進(jìn)行過(guò)寫(xiě)操作,讀根實(shí)例對(duì)象的域就會(huì)被標(biāo)記,就可以利用虛擬機(jī)中記錄的這種信息,讀出為所述實(shí)例對(duì)象的域分配的存儲(chǔ)區(qū)中對(duì)象的域的值。顯然,該實(shí)施方式中不但進(jìn)一步節(jié)省實(shí)例的數(shù)據(jù)存儲(chǔ)空間,還保留有圖3實(shí)施例的全部?jī)?yōu)點(diǎn)。當(dāng)所述應(yīng)用程序停止運(yùn)行時(shí),不僅要停止全部其它實(shí)例的運(yùn)行,釋放全部實(shí)例占用的程序運(yùn)行空間和數(shù)據(jù)存儲(chǔ)空間,還要釋放根實(shí)例占用的程序運(yùn)行空間和數(shù)據(jù)存儲(chǔ)空間。在同一個(gè)發(fā)明構(gòu)思下,本發(fā)明還公開(kāi)了一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的系統(tǒng),圖5示意性示出了一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的系統(tǒng)的結(jié)構(gòu)框圖,如圖5所示,該系統(tǒng)包括根實(shí)例啟動(dòng)裝置501,被配置為開(kāi)始運(yùn)行所述應(yīng)用程序的根實(shí)例,該根實(shí)例包含至少一個(gè)線程;根實(shí)例停止裝置502,被配置為響應(yīng)于所述根實(shí)例的一個(gè)線程運(yùn)行到應(yīng)用程序中預(yù)先設(shè)置的凍結(jié)點(diǎn),停止所述根實(shí)例的全部線程的運(yùn)行;復(fù)制裝置503,被配置為響應(yīng)于啟動(dòng)該應(yīng)用程序的一個(gè)實(shí)例的全部線程的運(yùn)行,復(fù)制所述根實(shí)例的全部線程的運(yùn)行狀態(tài)作為該實(shí)例的全部線程的運(yùn)行狀態(tài)的裝置;以及繼續(xù)運(yùn)行裝置504,被配置為繼續(xù)運(yùn)行該應(yīng)用程序的所述實(shí)例的全部線程的裝置。在優(yōu)選的實(shí)施方式中,該系統(tǒng)還包括根實(shí)例對(duì)象標(biāo)注裝置505,被配置為響應(yīng)于所述根實(shí)例的一個(gè)線程運(yùn)行到應(yīng)用程序中預(yù)先設(shè)置的凍結(jié)點(diǎn)標(biāo)注所述根實(shí)例中的根實(shí)例對(duì)象的屬性為只讀。該系統(tǒng)中,所述線程的運(yùn)行狀態(tài)至少包括線程當(dāng)前的棧、寄存器的值、以及當(dāng)前的指令。該系統(tǒng)實(shí)例的線程的運(yùn)行狀態(tài)的當(dāng)前的棧內(nèi)包括對(duì)所述實(shí)例對(duì)象的引用,所述實(shí)例對(duì)象的引用被初始化為指向所述根實(shí)例對(duì)象。在一種實(shí)施方式中,繼續(xù)運(yùn)行裝置進(jìn)一步包括寫(xiě)操作接收裝置,被配置為接收對(duì)所述實(shí)例對(duì)象的域的寫(xiě)操作;存儲(chǔ)區(qū)分配裝置,被配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向所述根實(shí)例對(duì)象,為所述實(shí)例對(duì)象分配存儲(chǔ)區(qū);引用修改裝置,被配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向所述根實(shí)例對(duì)象,將所述實(shí)例對(duì)象的引用指向?yàn)樗龃鎯?chǔ)區(qū)分配裝置分配的存儲(chǔ)區(qū);寫(xiě)操作執(zhí)行裝置,被配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向所述根實(shí)例對(duì)象,在所述存儲(chǔ)區(qū)分配裝置分配的存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。其中所述寫(xiě)操作執(zhí)行裝置還進(jìn)一步被配置為響應(yīng)于所述寫(xiě)操作 接收裝置接收的實(shí)例對(duì)象的引用不指向所述根實(shí)例對(duì)象,在所述存儲(chǔ)區(qū)分配裝置分配的存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。在另一種實(shí)施方式中,繼續(xù)運(yùn)行裝置進(jìn)一步包括寫(xiě)操作接收裝置,被配置為接收對(duì)所述實(shí)例對(duì)象的域的寫(xiě)操作;標(biāo)記裝置,被配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向的根實(shí)例對(duì)象的對(duì)應(yīng)域被標(biāo)記為未執(zhí)行過(guò)寫(xiě)操作,標(biāo)記所述根實(shí)例對(duì)象的對(duì)應(yīng)域?yàn)閳?zhí)行過(guò)寫(xiě)操作;存儲(chǔ)區(qū)分配裝置,被配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向的根實(shí)例對(duì)象的對(duì)應(yīng)域被標(biāo)記為未執(zhí)行過(guò)寫(xiě)操作,為所述實(shí)例對(duì)象的域分配存儲(chǔ)區(qū);寫(xiě)操作執(zhí)行裝置,被配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向的根實(shí)例對(duì)象的對(duì)應(yīng)域被標(biāo)記為未執(zhí)行過(guò)寫(xiě)操作,在所述存儲(chǔ)區(qū)分配裝置分配的存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。該系統(tǒng)中寫(xiě)操作執(zhí)行裝置還被進(jìn)一步配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向的根實(shí)例對(duì)象的對(duì)應(yīng)域被標(biāo)記為執(zhí)行過(guò)寫(xiě)操作,在所述存儲(chǔ)區(qū)分配裝置分配的存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。雖然這里參照附圖描述了本發(fā)明的示例性實(shí)施例,但是應(yīng)該理解本發(fā)明不限于這些精確的實(shí)施例,并且在不背離本發(fā)明的范圍和宗旨的情況下,本領(lǐng)域普通技術(shù)人員能對(duì)實(shí)施例進(jìn)行各種變化的修改。所有這些變化和修改意欲包含在所附權(quán)利要求中限定的本發(fā)明的范圍中。并且根據(jù)上述描述,所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明可以體現(xiàn)為裝置、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可以具體實(shí)現(xiàn)為以下形式,即,可以是完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等)、或者本文一般稱(chēng)為“電路”、“模塊”或“系統(tǒng)”的軟件部分與硬件部分的組合。此外,本發(fā)明還可以采取體現(xiàn)在任何有形的表達(dá)介質(zhì)(mediumof expression)中的計(jì)算機(jī)程序產(chǎn)品的形式,該介質(zhì)中包含計(jì)算機(jī)可讀的程序碼??梢允褂靡粋€(gè)或多個(gè)計(jì)算機(jī)可讀的或計(jì)算機(jī)可讀的介質(zhì)的任何組合。計(jì)算機(jī)可讀的或計(jì)算機(jī)可讀的介質(zhì)例如可以是——但不限于——電的、磁的、光的、電磁的、紅外線的、或半導(dǎo)體的系統(tǒng)、裝置、器件或傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的更具體的例子(非窮舉的列表)包括以下有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊磁盤(pán)只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、諸如支持因特網(wǎng)或內(nèi)部網(wǎng)的傳輸介質(zhì)、或者磁存儲(chǔ)器件。注意計(jì)算機(jī)可讀的或計(jì)算機(jī)可讀的介質(zhì)甚至可以是上面印有程序的紙張或者其它合適的介質(zhì),這是因?yàn)?,例如可以通過(guò)電掃描這種紙張或其它介質(zhì),以電子方式獲得程序,然后以適當(dāng)?shù)姆绞郊右跃幾g、解釋或處理,并且必要的話在計(jì)算機(jī)存儲(chǔ)器中存儲(chǔ)。在本文件的語(yǔ)境中,計(jì)算機(jī)可讀的或計(jì)算機(jī)可讀的介質(zhì)可以是任何含有、存儲(chǔ)、傳達(dá)、傳播、或傳輸供指令執(zhí)行系統(tǒng)、裝置或器件使用的或與指令執(zhí)行系統(tǒng)、裝置或器件相聯(lián)系的程序的介質(zhì)。計(jì)算機(jī)可讀的介質(zhì)可包括在基帶中或者作為載波一部分傳播的、由其體現(xiàn)計(jì)算機(jī)可讀的程序碼的數(shù)據(jù)信號(hào)。計(jì)算機(jī)可讀的程序碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無(wú)線、電線、光纜、RF等等。用于執(zhí)行本發(fā)明的操作的計(jì)算機(jī)程序碼,可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任何組合來(lái)編寫(xiě),所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言一諸如Java、Smalltalk、 C++之類(lèi),還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言——諸如” C”程序設(shè)計(jì)語(yǔ)言或類(lèi)似的程序設(shè)計(jì)語(yǔ)言。程序碼可以完全地在用戶的計(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ī)可以通過(guò)任何種類(lèi)的網(wǎng)絡(luò)——包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)——連接到用戶的計(jì)算機(jī),或者,可以(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng))連接到外部計(jì)算機(jī)。此外,本發(fā)明的流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行的這些指令,產(chǎn)生實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置(means)。也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在能指令計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令產(chǎn)生一個(gè)包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruction means)的制造品,也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置上,使得在計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,從而在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令就提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過(guò)程。附圖中的流程圖和框圖,圖示了按照本發(fā)明各種實(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è)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專(zhuān) 用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專(zhuān)用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
權(quán)利要求
1.一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的方法,該方法包括 開(kāi)始運(yùn)行所述應(yīng)用程序的根實(shí)例,該根實(shí)例包含至少一個(gè)線程; 響應(yīng)于所述根實(shí)例的一個(gè)線程運(yùn)行到應(yīng)用程序中預(yù)先設(shè)置的凍結(jié)點(diǎn),停止所述根實(shí)例的全部線程的運(yùn)行; 響應(yīng)于開(kāi)始運(yùn)行該應(yīng)用程序的一個(gè)實(shí)例,復(fù)制所述根實(shí)例的全部線程的運(yùn)行狀態(tài)作為該實(shí)例的全部線程的運(yùn)行狀態(tài);以及 繼續(xù)運(yùn)行該應(yīng)用程序的所述實(shí)例的全部線程。
2.根據(jù)權(quán)利要求I所述的方法,其中所述運(yùn)行狀態(tài)至少包括線程當(dāng)前的棧、寄存器的值、以及當(dāng)前的指令。
3.根據(jù)權(quán)利要求2所述的方法,其中所述運(yùn)行狀態(tài)的當(dāng)前的棧內(nèi)包括對(duì)所述實(shí)例中的實(shí)例對(duì)象的引用,所述實(shí)例對(duì)象的引用被初始化為指向所述根實(shí)例對(duì)象。
4.根據(jù)權(quán)利要求3所述的方法,其中所述繼續(xù)運(yùn)行所述該應(yīng)用程序的所述實(shí)例的全部線程包括 接收對(duì)所述實(shí)例對(duì)象的域的寫(xiě)操作; 響應(yīng)于所述實(shí)例對(duì)象的引用指向所述根實(shí)例對(duì)象 為所述實(shí)例對(duì)象分配存儲(chǔ)區(qū); 將對(duì)所述實(shí)例對(duì)象的引用指向?yàn)樗龃鎯?chǔ)區(qū); 在所述存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。
5.根據(jù)權(quán)利要求4所述的方法,該方法還包括 響應(yīng)于所述實(shí)例對(duì)象的引用不指向所述根實(shí)例對(duì)象,在所述實(shí)例對(duì)象的引用指向的存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。
6.根據(jù)權(quán)利要求3所述的方法,其中所述繼續(xù)運(yùn)行所述該應(yīng)用程序的所述實(shí)例的全部線程包括 接收對(duì)所述實(shí)例對(duì)象的域的寫(xiě)操作; 響應(yīng)于所述實(shí)例對(duì)象的引用指向的所述根實(shí)例對(duì)象的對(duì)應(yīng)域被標(biāo)記為未執(zhí)行過(guò)寫(xiě)操作 為所述實(shí)例對(duì)象的域分配存儲(chǔ)區(qū); 標(biāo)記所述根實(shí)例對(duì)象的對(duì)應(yīng)域?yàn)閳?zhí)行過(guò)寫(xiě)操作; 在所述存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。
7.根據(jù)權(quán)利要求6所述的方法,該方法還包括 響應(yīng)于所述實(shí)例對(duì)象的引用指向的所述根實(shí)例對(duì)象的對(duì)應(yīng)域被標(biāo)記為執(zhí)行過(guò)寫(xiě)操作,在為寫(xiě)操作相關(guān)的實(shí)例對(duì)象的域分配的存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。
8.根據(jù)權(quán)利要求I所述的方法,該方法還包括響應(yīng)于所述根實(shí)例的一個(gè)線程運(yùn)行到應(yīng)用程序中預(yù)先設(shè)置的凍結(jié)點(diǎn),標(biāo)注所述根實(shí)例中的根實(shí)例對(duì)象的屬性為只讀。
9.一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的系統(tǒng),該系統(tǒng)包括 根實(shí)例啟動(dòng)裝置,被配置為開(kāi)始運(yùn)行所述應(yīng)用程序的根實(shí)例,該根實(shí)例包含至少一個(gè)線程; 根實(shí)例停止裝置,被配置為響應(yīng)于所述根實(shí)例的一個(gè)線程運(yùn)行到應(yīng)用程序中預(yù)先設(shè)置的凍結(jié)點(diǎn),停止所述根實(shí)例的全部線程的運(yùn)行;復(fù)制裝置,被配置為響應(yīng)于開(kāi)始運(yùn)行該應(yīng)用程序的一個(gè)實(shí)例,復(fù)制所述根實(shí)例的全部線程的運(yùn)行狀態(tài)作為該實(shí)例的全部線程的運(yùn)行狀態(tài);以及 繼續(xù)運(yùn)行裝置,被配置為繼續(xù)運(yùn)行該應(yīng)用程序的所述實(shí)例的全部線程。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其中所述運(yùn)行狀態(tài)至少包括線程當(dāng)前的棧、寄存器的值、以及當(dāng)前的指令。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述運(yùn)行狀態(tài)的當(dāng)前的棧內(nèi)包括對(duì)所述實(shí)例中的實(shí)例對(duì)象的引用,所述實(shí)例對(duì)象的引用被初始化為指向所述根實(shí)例對(duì)象。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述繼續(xù)運(yùn)行裝置包括 寫(xiě)操作接收裝置,被配置為接收對(duì)所述實(shí)例對(duì)象的域的寫(xiě)操作; 存儲(chǔ)區(qū)分配裝置,被配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向所述根實(shí)例對(duì)象,為所述實(shí)例對(duì)象分配存儲(chǔ)區(qū); 引用修改裝置,被配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向所述根實(shí)例對(duì)象,將所述實(shí)例對(duì)象的引用指向?yàn)樗龃鎯?chǔ)區(qū)分配裝置分配的存儲(chǔ)區(qū); 寫(xiě)操作執(zhí)行裝置,被配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向所述根實(shí)例對(duì)象,在所述存儲(chǔ)區(qū)分配裝置分配的存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中所述寫(xiě)操作執(zhí)行裝置還被進(jìn)一步配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用不指向所述根實(shí)例對(duì)象,在所述存儲(chǔ)區(qū)分配裝置分配的存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。
14.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述繼續(xù)運(yùn)行裝置包括 寫(xiě)操作接收裝置,被配置為接收對(duì)所述實(shí)例對(duì)象的域的寫(xiě)操作; 標(biāo)記裝置,被配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向的根實(shí)例對(duì)象的對(duì)應(yīng)域被標(biāo)記為未執(zhí)行過(guò)寫(xiě)操作,標(biāo)記所述根實(shí)例對(duì)象的對(duì)應(yīng)域?yàn)閳?zhí)行過(guò)寫(xiě)操作;存儲(chǔ)區(qū)分配裝置,被配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向的根實(shí)例對(duì)象的對(duì)應(yīng)域被標(biāo)記為未執(zhí)行過(guò)寫(xiě)操作,為所述實(shí)例對(duì)象的域分配存儲(chǔ)區(qū); 寫(xiě)操作執(zhí)行裝置,被配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向的根實(shí)例對(duì)象的對(duì)應(yīng)域被標(biāo)記為未執(zhí)行過(guò)寫(xiě)操作,在所述存儲(chǔ)區(qū)分配裝置分配的存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),該系統(tǒng)中寫(xiě)操作執(zhí)行裝置還被進(jìn)一步配置為響應(yīng)于所述寫(xiě)操作接收裝置接收的實(shí)例對(duì)象的引用指向的根實(shí)例對(duì)象的對(duì)應(yīng)域被標(biāo)記為執(zhí)行過(guò)寫(xiě)操作,在所述存儲(chǔ)區(qū)分配裝置分配的存儲(chǔ)區(qū)執(zhí)行寫(xiě)操作。
16.根據(jù)權(quán)利要求9所述的系統(tǒng),該系統(tǒng)還包括 根實(shí)例對(duì)象標(biāo)注裝置,被配置為響應(yīng)于所述根實(shí)例的一個(gè)線程運(yùn)行到應(yīng)用程序中預(yù)先設(shè)置的凍結(jié)點(diǎn),標(biāo)注所述根實(shí)例中的根實(shí)例對(duì)象的屬性為只讀。
全文摘要
本發(fā)明公開(kāi)了一種運(yùn)行應(yīng)用程序的多個(gè)實(shí)例的方法和系統(tǒng),該方法包括開(kāi)始運(yùn)行所述應(yīng)用程序的根實(shí)例,該根實(shí)例包含至少一個(gè)線程;響應(yīng)于所述根實(shí)例的一個(gè)線程運(yùn)行到應(yīng)用程序中預(yù)先設(shè)置的凍結(jié)點(diǎn),停止所述根實(shí)例的全部線程的運(yùn)行;響應(yīng)于開(kāi)始運(yùn)行該應(yīng)用程序的一個(gè)實(shí)例,復(fù)制所述根實(shí)例的全部線程的運(yùn)行狀態(tài)作為該實(shí)例的全部線程的運(yùn)行狀態(tài);以及繼續(xù)運(yùn)行該應(yīng)用程序的所述實(shí)例的全部線程。該方法和系統(tǒng)在多租戶的云計(jì)算環(huán)境下能夠節(jié)省程序運(yùn)行空間和數(shù)據(jù)存儲(chǔ)空間。
文檔編號(hào)G06F9/445GK102736945SQ20111008118
公開(kāi)日2012年10月17日 申請(qǐng)日期2011年3月31日 優(yōu)先權(quán)日2011年3月31日
發(fā)明者王恒, 蔡俊杰 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
平安县| 霸州市| 巫山县| 宝鸡市| 来凤县| 读书| 五河县| 洛南县| 渭源县| 永川市| 红河县| 新晃| 石阡县| 汉川市| 洛南县| 嘉鱼县| 秀山| 昌乐县| 新干县| 通山县| 富锦市| 普格县| 巴里| 驻马店市| 田林县| 镇坪县| 沧州市| 万盛区| 高淳县| 什邡市| 连山| 蒙城县| 浮山县| 弥渡县| 元谋县| 临城县| 奉贤区| 城固县| 新干县| 普陀区| 南平市|