本技術(shù)涉及計算機(jī)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法、裝置、設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、虛擬機(jī)(virtual?machine,vm)技術(shù)是一種被廣泛應(yīng)用的計算機(jī)技術(shù)。通過虛擬機(jī)技術(shù),可以在物理主機(jī)上創(chuàng)建相對獨立的虛擬機(jī),并在虛擬機(jī)中相對獨立地運(yùn)行程序。其中,虛擬機(jī)是運(yùn)行于物理主機(jī)的程序,虛擬機(jī)能夠運(yùn)行其他程序。
2、在創(chuàng)建虛擬機(jī)時,可以為虛擬機(jī)分配內(nèi)存。在通過虛擬機(jī)運(yùn)行程序的過程中,程序可以使用為虛擬機(jī)分配的內(nèi)存運(yùn)行。如果程序所使用的內(nèi)存量,超過了為虛擬機(jī)分配到的內(nèi)存量,那么程序可能因為內(nèi)存量不足而崩潰。
技術(shù)實現(xiàn)思路
1、為了解決現(xiàn)有技術(shù)的問題,本技術(shù)提供了一種數(shù)據(jù)處理方法、裝置、設(shè)備及存儲介質(zhì)。
2、基于此,本技術(shù)提供的技術(shù)方案如下:
3、第一方面,本技術(shù)提供了一種數(shù)據(jù)處理方法,所述方法應(yīng)用于運(yùn)行于目標(biāo)虛擬機(jī)的目標(biāo)應(yīng)用程序,所述方法包括:
4、在所述目標(biāo)虛擬機(jī)中創(chuàng)建第一對象,所述第一對象為所述目標(biāo)應(yīng)用程序中的對象,所述目標(biāo)虛擬機(jī)為所述第一對象分配內(nèi)存;
5、將所述第一對象的內(nèi)存占用量修改為預(yù)設(shè)值,所述第一對象的內(nèi)存占用量用于計算所述目標(biāo)應(yīng)用程序的內(nèi)存占用總量,所述目標(biāo)應(yīng)用程序的內(nèi)存占用總量表示所述目標(biāo)應(yīng)用程序在所述目標(biāo)虛擬機(jī)中占用的內(nèi)存量。
6、在一些可能的實現(xiàn)方式中,所述將所述第一對象的內(nèi)存占用量修改為預(yù)設(shè)值包括:
7、將內(nèi)存分配函數(shù)的返回值設(shè)置為所述預(yù)設(shè)值,所述內(nèi)存分配函數(shù)屬于所述目標(biāo)虛擬機(jī),所述內(nèi)存分配函數(shù)用于為所述第一對象分配內(nèi)存,所述內(nèi)存分配函數(shù)的返回值指示所述第一對象在所述目標(biāo)虛擬機(jī)中占用的內(nèi)存量。
8、在一些可能的實現(xiàn)方式中,所述將內(nèi)存分配函數(shù)的返回值設(shè)置為預(yù)設(shè)值包括:
9、確定函數(shù)內(nèi)存地址表,所述函數(shù)內(nèi)存地址表指示所述目標(biāo)虛擬機(jī)中的函數(shù)在內(nèi)存中的地址,所述函數(shù)內(nèi)存地址表用于調(diào)用所述內(nèi)存分配函數(shù);
10、修改所述函數(shù)內(nèi)存地址表,修改后的函數(shù)內(nèi)存地址表用于調(diào)用預(yù)設(shè)占用返回函數(shù),所述預(yù)設(shè)占用返回函數(shù)用于調(diào)用所述內(nèi)存分配函數(shù)為所述第一對象分配內(nèi)存,所述預(yù)設(shè)占用返回函數(shù)的返回值為所述預(yù)設(shè)值。
11、在一些可能的實現(xiàn)方式中,所述函數(shù)內(nèi)存地址表包括目標(biāo)指針,所述目標(biāo)指針指向所述內(nèi)存分配函數(shù)的內(nèi)存地址;
12、所述修改所述函數(shù)內(nèi)存地址表包括:
13、修改目標(biāo)指針,修改后的目標(biāo)指針指向所述預(yù)設(shè)占用返回函數(shù)的內(nèi)存地址。
14、在一些可能的實現(xiàn)方式中,在修改目標(biāo)指針之前,所述方法還包括:
15、獲取所述內(nèi)存分配函數(shù)的所述內(nèi)存地址;
16、根據(jù)所述分配函數(shù)的所述內(nèi)存地址,從所述函數(shù)內(nèi)存地址表中確定所述目標(biāo)指針。
17、在一些可能的實現(xiàn)方式中,在完成所述第一對象的創(chuàng)建之后,所述方法還包括:
18、設(shè)置所述第一對象的內(nèi)存釋放量為所述預(yù)設(shè)值,所述第一對象的內(nèi)存釋放量用于在所述第一對象的運(yùn)行結(jié)束之后更新所述內(nèi)存占用總量。
19、在一些可能的實現(xiàn)方式中,,所述方法還包括:
20、確定所述目標(biāo)虛擬機(jī)中運(yùn)行的第二對象,所述第二對象為所述目標(biāo)應(yīng)用程序中的對象,所述第二對象的內(nèi)存占用量大于所述預(yù)設(shè)值;
21、根據(jù)所述第二對象的內(nèi)存占用量和所述預(yù)設(shè)值更新所述內(nèi)存占用總量,更新后的所述內(nèi)存占用總量小于更新前的所述內(nèi)存占用總量。
22、在一些可能的實現(xiàn)方式中,所述更新后的內(nèi)存占用總量與所述預(yù)設(shè)值之差,對應(yīng)所述更新前的內(nèi)存占用總量與所述第二對象的內(nèi)存占用量之差。
23、在一些可能的實現(xiàn)方式中,在更新所述內(nèi)存占用量之后,所述方法還包括:
24、將所述第二對象的內(nèi)存釋放量設(shè)置為所述預(yù)設(shè)值,所述第二對象的內(nèi)存釋放量用于在所述第二對象的運(yùn)行結(jié)束之后更新所述內(nèi)存占用總量。
25、第二方面,本技術(shù)提供了一種數(shù)據(jù)處理裝置,所述裝置應(yīng)用于運(yùn)行于目標(biāo)虛擬機(jī)的目標(biāo)應(yīng)用程序,所述裝置包括:
26、創(chuàng)建單元,用于在所述目標(biāo)虛擬機(jī)中創(chuàng)建第一對象,所述第一對象為所述目標(biāo)應(yīng)用程序中的對象,所述目標(biāo)虛擬機(jī)為所述第一對象分配內(nèi)存;
27、修改單元,用于將所述第一對象的內(nèi)存占用量修改為預(yù)設(shè)值,所述第一對象的內(nèi)存占用量用于計算所述目標(biāo)應(yīng)用程序的內(nèi)存占用總量,所述目標(biāo)應(yīng)用程序的內(nèi)存占用總量表示所述目標(biāo)應(yīng)用程序在所述目標(biāo)虛擬機(jī)中占用的內(nèi)存量
28、在一些可能的實現(xiàn)方式中,所述修改單元,具體用于將內(nèi)存分配函數(shù)的返回值設(shè)置為所述預(yù)設(shè)值,所述內(nèi)存分配函數(shù)屬于所述目標(biāo)虛擬機(jī),所述內(nèi)存分配函數(shù)用于為所述第一對象分配內(nèi)存,所述內(nèi)存分配函數(shù)的返回值指示所述第一對象在所述目標(biāo)虛擬機(jī)中占用的內(nèi)存量。
29、在一些可能的實現(xiàn)方式中,所述修改單元,具體用于確定函數(shù)內(nèi)存地址表,所述函數(shù)內(nèi)存地址表指示所述目標(biāo)虛擬機(jī)中的函數(shù)在內(nèi)存中的地址,所述函數(shù)內(nèi)存地址表用于調(diào)用所述內(nèi)存分配函數(shù);修改所述函數(shù)內(nèi)存地址表,修改后的函數(shù)內(nèi)存地址表用于調(diào)用預(yù)設(shè)占用返回函數(shù),所述預(yù)設(shè)占用返回函數(shù)用于調(diào)用所述內(nèi)存分配函數(shù)為所述第一對象分配內(nèi)存,所述預(yù)設(shè)占用返回函數(shù)的返回值為所述預(yù)設(shè)值。
30、在一些可能的實現(xiàn)方式中,所述函數(shù)內(nèi)存地址表包括目標(biāo)指針,所述目標(biāo)指針指向所述內(nèi)存分配函數(shù)的內(nèi)存地址;所述修改單元,具體用于修改目標(biāo)指針,修改后的目標(biāo)指針指向所述預(yù)設(shè)占用返回函數(shù)的內(nèi)存地址。
31、在一些可能的實現(xiàn)方式中,所述修改單元,具體用于獲取所述內(nèi)存分配函數(shù)的所述內(nèi)存地址;根據(jù)所述分配函數(shù)的所述內(nèi)存地址,從所述函數(shù)內(nèi)存地址表中確定所述目標(biāo)指針。
32、在一些可能的實現(xiàn)方式中,所述修改單元,還用于設(shè)置所述第一對象的內(nèi)存釋放量為所述預(yù)設(shè)值,所述第一對象的內(nèi)存釋放量用于在所述第一對象的運(yùn)行結(jié)束之后更新所述內(nèi)存占用總量。
33、在一些可能的實現(xiàn)方式中,所述修改單元,還用于確定所述目標(biāo)虛擬機(jī)中運(yùn)行的第二對象,所述第二對象為所述目標(biāo)應(yīng)用程序中的對象,所述第二對象的內(nèi)存占用量大于所述預(yù)設(shè)值;根據(jù)所述第二對象的內(nèi)存占用量和所述預(yù)設(shè)值更新所述內(nèi)存占用總量,更新后的所述內(nèi)存占用總量小于更新前的所述內(nèi)存占用總量。
34、在一些可能的實現(xiàn)方式中,所述更新后的內(nèi)存占用總量與所述預(yù)設(shè)值之差,對應(yīng)所述更新前的內(nèi)存占用總量與所述第二對象的內(nèi)存占用量之差。
35、在一些可能的實現(xiàn)方式中,所述修改單元,還用于將所述第二對象的內(nèi)存釋放量設(shè)置為所述預(yù)設(shè)值,所述第二對象的內(nèi)存釋放量用于在所述第二對象的運(yùn)行結(jié)束之后更新所述內(nèi)存占用總量。
36、第三方面,本技術(shù)提供一種電子設(shè)備,包括:
37、一個或多個處理器;
38、存儲裝置,其上存儲有一個或多個程序,
39、當(dāng)所述一個或多個程序被所述一個或多個處理器執(zhí)行,使得所述一個或多個處理器實現(xiàn)第一方面中任一所述的方法。
40、第四方面,本技術(shù)提供一種計算機(jī)可讀介質(zhì),其上存儲有計算機(jī)程序,其中,所述程序被處理器執(zhí)行時實現(xiàn)第一方面中任一所述的方法。
41、第五方面,本技術(shù)提供一種計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品在設(shè)備上運(yùn)行時,使得所述設(shè)備執(zhí)行第一方面所述的方法。
42、由此可見,本技術(shù)具有如下有益效果:
43、本技術(shù)提供了一種數(shù)據(jù)處理方法、裝置、設(shè)備及存儲介質(zhì)。該方法可以應(yīng)用于通過虛擬機(jī)運(yùn)行的目標(biāo)應(yīng)用程序。具體地,在目標(biāo)應(yīng)用程序在目標(biāo)虛擬機(jī)運(yùn)行的過程中,目標(biāo)程序可以在目標(biāo)虛擬機(jī)中創(chuàng)建第一對象。其中,第一對象是目標(biāo)程序中的對象,目標(biāo)虛擬機(jī)可以在創(chuàng)建第一對象時為第一對象分配內(nèi)存,以使第一對象對應(yīng)的數(shù)據(jù)被存儲到目標(biāo)虛擬機(jī)為第一對象分配的內(nèi)存。接著,可以將第一對象的內(nèi)存占用量修改為預(yù)設(shè)值。第一對象的內(nèi)存占用量用于計算目標(biāo)應(yīng)用程序的內(nèi)存占用總量。目標(biāo)應(yīng)用程序的內(nèi)存占用總量表示目標(biāo)應(yīng)用程序在目標(biāo)虛擬機(jī)中占用的內(nèi)存量。由于將第一對象的內(nèi)存占用量修改為預(yù)設(shè)值,相當(dāng)于通過預(yù)設(shè)值代替第一對象實際的內(nèi)存占用量。也就是說,對于目標(biāo)虛擬機(jī)而言,第一對象也只是占用了目標(biāo)虛擬機(jī)中預(yù)設(shè)值對應(yīng)的內(nèi)存量。這樣,即使第一對象實際占用了大量內(nèi)存,也是將預(yù)設(shè)值作為第一對象在目標(biāo)虛擬機(jī)中占用的內(nèi)存量計算內(nèi)存占用總量。而預(yù)設(shè)值往往小于第一對象實際占用的內(nèi)存量,例如預(yù)設(shè)值可以為零,那么根據(jù)預(yù)設(shè)值計算得到的內(nèi)存占用總量可以小于根據(jù)第一對象實際占用的內(nèi)存量計算得到的內(nèi)存占用總量。如此,減小了目標(biāo)應(yīng)用程序的內(nèi)存占用總量,降低了因目標(biāo)應(yīng)用程序的內(nèi)存占用總量超過虛擬機(jī)分配到的內(nèi)存量而崩潰的風(fēng)險。