1.一種資源回收方法,其特征在于,包括:
針對(duì)部署在容器中的應(yīng)用,在運(yùn)行所述容器的虛擬機(jī)中創(chuàng)建所述應(yīng)用對(duì)應(yīng)的租戶,以使所述應(yīng)用使用所述租戶在所述虛擬機(jī)中的資源運(yùn)行;
在對(duì)所述應(yīng)用進(jìn)行熱部署升級(jí)時(shí),根據(jù)所述應(yīng)用對(duì)應(yīng)的租戶,對(duì)所述應(yīng)用使用的所述資源進(jìn)行回收。
2.如權(quán)利要求1所述的方法,其特征在于,在運(yùn)行所述容器的虛擬機(jī)中創(chuàng)建所述應(yīng)用對(duì)應(yīng)的租戶,具體包括:
通過(guò)所述容器,在所述虛擬機(jī)中創(chuàng)建與所述應(yīng)用對(duì)應(yīng)的租戶上下文,所述租戶上下文用于表征所述應(yīng)用對(duì)應(yīng)的租戶。
3.如權(quán)利要求1所述的方法,其特征在于,所述虛擬機(jī)中還包含根租戶,所述根租戶用于向所述應(yīng)用對(duì)應(yīng)的租戶提供運(yùn)行所述應(yīng)用所需的部分或全部資源。
4.如權(quán)利要求1所述的方法,其特征在于,所述應(yīng)用使用的資源,包括以下至少一種:
所述應(yīng)用使用的所述虛擬機(jī)中的線程;
所述應(yīng)用打開(kāi)的所述虛擬機(jī)中的文件句柄;
所述應(yīng)用使用的所述虛擬機(jī)中的共享變量對(duì)象。
5.如權(quán)利要求4所述的方法,其特征在于,所述應(yīng)用使用的所述虛擬機(jī)中的線程,包括以下至少一種:
由所述根租戶的線程切換得到的線程;
所述應(yīng)用自身創(chuàng)建的線程。
6.如權(quán)利要求5所述的方法,其特征在于,當(dāng)所述虛擬機(jī)中的線程為由所述根租戶的線程切換得到的線程時(shí),使所述應(yīng)用使用所述虛擬機(jī)中的線程,具體包括:
通過(guò)所述容器,將所述虛擬機(jī)根租戶的線程切換到所述應(yīng)用對(duì)應(yīng)的租戶上下文中運(yùn)行。
7.如權(quán)利要求4所述的方法,其特征在于,根據(jù)所述應(yīng)用對(duì)應(yīng)的租戶,對(duì)所述應(yīng)用使用的所述虛擬機(jī)中的線程進(jìn)行回收,具體包括:
根據(jù)所述應(yīng)用對(duì)應(yīng)的租戶,對(duì)所述租戶中運(yùn)行的線程拋出異常對(duì)象;
根據(jù)異常處理機(jī)制,對(duì)拋出異常對(duì)象的線程進(jìn)行關(guān)閉。
8.如權(quán)利要求7所述的方法,其特征在于,當(dāng)所述應(yīng)用使用的線程為所述應(yīng)用自身創(chuàng)建的線程時(shí),根據(jù)所述應(yīng)用對(duì)應(yīng)的租戶,對(duì)所述租戶中運(yùn)行的線程拋出異常對(duì)象,具體包括:
對(duì)所述應(yīng)用對(duì)應(yīng)的租戶中應(yīng)用自身創(chuàng)建的線程進(jìn)行標(biāo)記;
針對(duì)攜帶有所述標(biāo)記的線程拋出異常對(duì)象;
修改攜帶有標(biāo)記的線程棧上所有方法的異常處理機(jī)制,以使得根據(jù)所述異常處理機(jī)制無(wú)法查詢到與所述拋出異常對(duì)象對(duì)應(yīng)的異常類型;
根據(jù)異常處理機(jī)制,對(duì)拋出異常對(duì)象的線程進(jìn)行關(guān)閉,具體包括:
根據(jù)異常處理機(jī)制,對(duì)所述拋出異常對(duì)象的線程進(jìn)行退棧。
9.如權(quán)利要求7所述的方法,其特征在于,當(dāng)所述應(yīng)用使用的線程為由所述根租戶的線程切換得到的線程時(shí),針對(duì)所述應(yīng)用使用的虛擬機(jī)中的線程拋出異常對(duì)象,具體包括:
針對(duì)所述應(yīng)用對(duì)應(yīng)的租戶中由根租戶的線程切換得到的線程拋出異常對(duì)象;
修改由根租戶的線程切換得到的線程的異常處理機(jī)制,以使得根據(jù)所述異常處理機(jī)制無(wú)法查詢到與所述拋出異常對(duì)象對(duì)應(yīng)的異常類型;
對(duì)所述由根租戶的線程切換得到的線程中、表示應(yīng)用對(duì)應(yīng)的租戶入口的方法進(jìn)行標(biāo)記,以使得攜帶有所述標(biāo)記的方法中存的異常對(duì)象能夠被異常處理機(jī)制捕捉;
根據(jù)異常處理機(jī)制,對(duì)拋出異常對(duì)象的線程進(jìn)行關(guān)閉,具體包括:
根據(jù)異常處理機(jī)制,對(duì)攜帶有所述標(biāo)記的方法中存的異常對(duì)象進(jìn)行抓取,并將所述方法表示的線程切換回所述根租戶的上下文中。
10.如權(quán)利要求4所述的方法,其特征在于,根據(jù)所述應(yīng)用對(duì)應(yīng)的租戶,對(duì)所述應(yīng)用使用的所述虛擬機(jī)中的共享變量對(duì)象進(jìn)行回收前,所述方法還包括:
當(dāng)所述應(yīng)用使用所述虛擬機(jī)中的共享變量對(duì)象時(shí),對(duì)所述共享變量對(duì)象進(jìn)行復(fù)制,獲得所述共享變量對(duì)象的副本;
將所述共享變量對(duì)象的副本保存到與所述應(yīng)用對(duì)應(yīng)租戶的存儲(chǔ)空間,以使得所述應(yīng)用運(yùn)行時(shí)使用保存在所述存儲(chǔ)空間中的共享變量對(duì)象副本。
11.如權(quán)利要求10所述的方法,其特征在于,根據(jù)所述應(yīng)用對(duì)應(yīng)的租戶,對(duì)所述應(yīng)用使用的所述虛擬機(jī)中的共享變量對(duì)象進(jìn)行回收,具體包括:
刪除保存在與所述應(yīng)用對(duì)應(yīng)的租戶的存儲(chǔ)空間中的共享變量對(duì)象副本;
回收所述存儲(chǔ)空間。
12.如權(quán)利要求4所述的方法,其特征在于,根據(jù)所述應(yīng)用對(duì)應(yīng)的租戶,對(duì)所述應(yīng)用打開(kāi)的所述虛擬機(jī)中的文件句柄進(jìn)行回收前,所述方法還包括:
追蹤所述應(yīng)用的文件句柄打開(kāi)操作;
將追蹤到的所述應(yīng)用打開(kāi)的文件句柄與所述應(yīng)用對(duì)應(yīng)的租戶關(guān)聯(lián)并保存。
13.如權(quán)利要求12所述的方法,其特征在于,根據(jù)所述應(yīng)用對(duì)應(yīng)的租戶,對(duì)所述應(yīng)用打開(kāi)的所述虛擬機(jī)中的文件句柄進(jìn)行回收,具體包括:
關(guān)閉與所述應(yīng)用對(duì)應(yīng)的租戶關(guān)聯(lián)保存的文件句柄。
14.如權(quán)利要求1~13任一所述的方法,其特征在于,所述應(yīng)用為JAVA應(yīng)用。
15.一種資源回收裝置,其特征在于,包括:
租戶創(chuàng)建單元,針對(duì)部署在容器中的應(yīng)用,在運(yùn)行所述容器的虛擬機(jī)中創(chuàng)建所述應(yīng)用對(duì)應(yīng)的租戶,以使所述應(yīng)用使用所述租戶在所述虛擬機(jī)中的資源運(yùn)行;
資源回收單元,在對(duì)所述應(yīng)用進(jìn)行熱部署升級(jí)時(shí),根據(jù)所述應(yīng)用對(duì)應(yīng)的租戶,對(duì)所述應(yīng)用使用的所述資源進(jìn)行回收。
16.如權(quán)利要求15所述的裝置,其特征在于,租戶創(chuàng)建單元,通過(guò)所述容器,在所述虛擬機(jī)中創(chuàng)建與所述應(yīng)用對(duì)應(yīng)的租戶上下文,所述租戶上下文用于表征所述應(yīng)用對(duì)應(yīng)的租戶。
17.如權(quán)利要求15所述的裝置,其特征在于,所述虛擬機(jī)中還包含根租戶,所述根租戶用于向所述應(yīng)用對(duì)應(yīng)的租戶提供運(yùn)行所述應(yīng)用所需的部分或全部資源。
18.如權(quán)利要求15所述的裝置,其特征在于,所述應(yīng)用使用的資源,包括以下至少一種:
所述應(yīng)用使用的所述虛擬機(jī)中的線程;
所述應(yīng)用打開(kāi)的所述虛擬機(jī)中的文件句柄;
所述應(yīng)用使用的所述虛擬機(jī)中的共享變量對(duì)象。
19.如權(quán)利要求18所述的裝置,其特征在于,所述應(yīng)用使用的所述虛擬機(jī)中的線程,包括以下至少一種:
由所述根租戶的線程切換得到的線程;
所述應(yīng)用自身創(chuàng)建的線程。
20.如權(quán)利要求19所述的裝置,其特征在于,租戶創(chuàng)建單元,當(dāng)所述虛擬機(jī)中的線程為由所述根租戶的線程切換得到的線程時(shí),通過(guò)所述容器,將所述虛擬機(jī)根租戶的線程切換到所述應(yīng)用對(duì)應(yīng)的租戶上下文中運(yùn)行。
21.如權(quán)利要求18所述的裝置,其特征在于,資源回收單元,根據(jù)所述應(yīng)用對(duì)應(yīng)的租戶,對(duì)所述租戶中運(yùn)行的線程拋出異常對(duì)象;
根據(jù)異常處理機(jī)制,對(duì)拋出異常對(duì)象的線程進(jìn)行關(guān)閉。
22.如權(quán)利要求21所述的裝置,其特征在于,資源回收單元,當(dāng)所述應(yīng)用使用的線程為所述應(yīng)用自身創(chuàng)建的線程時(shí),對(duì)所述應(yīng)用對(duì)應(yīng)的租戶中應(yīng)用自身創(chuàng)建的線程進(jìn)行標(biāo)記;
針對(duì)攜帶有所述標(biāo)記的線程拋出異常對(duì)象;
修改攜帶有標(biāo)記的線程棧上所有方法的異常處理機(jī)制,以使得根據(jù)所述異常處理機(jī)制無(wú)法查詢到與所述拋出異常對(duì)象對(duì)應(yīng)的異常類型;
根據(jù)異常處理機(jī)制,對(duì)所述拋出異常對(duì)象的線程進(jìn)行退棧。
23.如權(quán)利要求21所述的裝置,其特征在于,資源回收單元,當(dāng)所述應(yīng)用使用的線程為由所述根租戶的線程切換得到的線程時(shí),針對(duì)所述應(yīng)用對(duì)應(yīng)的租戶中由根租戶的線程切換得到的線程拋出異常對(duì)象;
修改由根租戶的線程切換得到的線程的異常處理機(jī)制,以使得根據(jù)所述異常處理機(jī)制無(wú)法查詢到與所述拋出異常對(duì)象對(duì)應(yīng)的異常類型;
對(duì)所述由根租戶的線程切換得到的線程中、表示根租戶線程入口的方法進(jìn)行標(biāo)記,以使得攜帶有所述標(biāo)記的方法中存的異常對(duì)象能夠被異常處理機(jī)制捕捉;
根據(jù)異常處理機(jī)制,對(duì)攜帶有所述標(biāo)記的方法中存的異常對(duì)象進(jìn)行抓取,并將所述方法表示的線程切換回所述根租戶的上下文中。
24.如權(quán)利要求18所述的裝置,其特征在于,資源回收單元,當(dāng)所述應(yīng)用使用所述虛擬機(jī)中的共享變量對(duì)象時(shí),對(duì)所述共享變量對(duì)象進(jìn)行復(fù)制,獲得所述共享變量對(duì)象的副本;
將所述共享變量對(duì)象的副本保存到與所述應(yīng)用對(duì)應(yīng)租戶的存儲(chǔ)空間,以使得所述應(yīng)用運(yùn)行時(shí)使用保存在所述存儲(chǔ)空間中的共享變量對(duì)象副本。
25.如權(quán)利要求24所述的裝置,其特征在于,資源回收單元,根據(jù)所述應(yīng)用對(duì)應(yīng)的租戶,將與所述租戶關(guān)聯(lián)保存的共享變量對(duì)象副本,確定為所述應(yīng)用使用的虛擬機(jī)中的共享變量對(duì)象;
刪除保存在與所述應(yīng)用對(duì)應(yīng)的租戶的存儲(chǔ)空間中的共享變量對(duì)象副本;
回收所述存儲(chǔ)空間。
26.如權(quán)利要求18所述的裝置,其特征在于,資源回收單元,追蹤所述應(yīng)用的文件句柄打開(kāi)操作;
將追蹤到的所述應(yīng)用打開(kāi)的文件句柄與所述應(yīng)用對(duì)應(yīng)的租戶關(guān)聯(lián)并保存。
27.如權(quán)利要求26所述的裝置,其特征在于,資源回收單元,關(guān)閉與所述應(yīng)用對(duì)應(yīng)的租戶關(guān)聯(lián)保存的文件句柄。