Java學習總結:32(Runtime類)

Runtime類

該類用於表示虛擬機(JVM)運行時的狀態,每次啓動JVM都對應一個Runtime實例,且只有一個實例,利用Runtime類可以啓動新的進程或進行相關運行時環境的操作。此外,該類採用單例模式設計,對象不可以直接實例化。所以,取得Runtime實例化對象的的方法爲:public static Runtime getRuntime()

Runtime類的常用方法

No. 方法 類型 描述
1 public static Runtime getRuntime() 普通 取得Runtime類的實例化對象
2 public long maxMemory() 普通 返回最大可用內存大小
3 public long totalMemory() 普通 返回所有可用內存大小
4 public long freelMemory() 普通 返回所有空餘內存大小
5 public void gc() 普通 執行垃圾回收操作
6 public Process exec(String command)throw IOException 普通 創建新的進程

注意:取得內存信息時,返回的數據爲long

例:觀察內存大小

package Project.Study.RuntimeClass;

public class Test1 {
    public static void main(String[]args){
        Runtime run=Runtime.getRuntime();				//取得Runtime類的實例化對象
        System.out.println("MAX="+run.maxMemory());		//取得最大可用內存
        System.out.println("TOTAL="+run.totalMemory());	//取得全部可用內存
        System.out.println("FREE="+run.freeMemory());	//取得空閒內存
    }
}
//結果:
//MAX=2111832064
//TOTAL=132120576
//FREE=129517640

本程序動態取得當前系統中的各個內存空間信息,返回的結果單位是字節(Byte)。

值得注意的是,我們可以設置啓動時的內存大小
Java中的內存劃分:Java中內存的劃分

每一塊內存空間都會存在一個內存伸縮區,當內存不足時就會動態開闢。我們可以使用以下參數申請內存空間:
“-Xms”:初始分配內存,默認大小爲1/64物理內存大小,但小於1G;
“-Xmx”:最大分配內存,默認大小爲1/4物理內存大小,但小於1G;
“-Xmn”:設置年輕代堆內存大小。
一般會將“-Xms”和“-Xmx”兩個參數的數值設爲相同,以減少申請內存空間的時間。

gc()方法的使用

gc()方法可以實現垃圾內存釋放的處理操作

例:觀察gc()方法的使用

package Project.Study.RuntimeClass;

public class Test2 {
    public static void main(String[]args){
        Runtime run=Runtime.getRuntime();	//取得Runtime類的實例化對象
        String str="";
        for(int x=0;x<2000;x++){	//進行循環操作,產生大量垃圾,佔用內存
            str+=x;
        }
        System.out.println("【垃圾處理前的內存量】MAX="+run.maxMemory());
        System.out.println("【垃圾處理前的內存量】TOTAL="+run.totalMemory());
        System.out.println("【垃圾處理前的內存量】FREE="+run.freeMemory());
        run.gc();	//釋放垃圾空間
        System.out.println("[垃圾處理後的內存量]MAX="+run.maxMemory());
        System.out.println("[垃圾處理後的內存量]TOTAL="+run.totalMemory());
        System.out.println("[垃圾處理後的內存量]FREE="+run.freeMemory());
    }
}
//結果:
//【垃圾處理前的內存量】MAX=2111832064
//【垃圾處理前的內存量】TOTAL=132120576
//【垃圾處理前的內存量】FREE=122711832
//[垃圾處理後的內存量]MAX=2111832064
//[垃圾處理後的內存量]TOTAL=10485760
//[垃圾處理後的內存量]FREE=9292944 (???)

關於垃圾回收處理和對象創建
對象創建流程

Runtime類有一個有意思的功能,可以通過它調用本機的可執行程序,並創建進程。

例:創建“mspaint.exe”(Windows的畫板)進程

package Project.Study.RuntimeClass;

public class Test3 {
    public static void main(String[]args) throws Exception {
        Runtime run=Runtime.getRuntime();		//取得Runtime實例化對象
        Process pro=run.exec("mspaint.exe");	//調用本機可執行程序
        Thread.sleep(2000);						//運行2s後自動關閉
        pro.destroy();							//銷燬進程
    }
}

效果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章