Runtime類是唯一一個與JVM運作狀态有關的類,它可以支援開發者完成對程式運作時記憶體的諸如檢視最大空間、擷取可用/空閑記憶體空間、手動GC等一系列操作,快來了解吧。
【本節目标】
通過閱讀本節内容,你将了解到Runtime在程式運作中的重要地位,并能夠通過合适的調用方法擷取執行個體,進行記憶體分析和手動垃圾處理等操作,對Java程式的運作過程有更深入的了解。
Runtime類
Runtime描述的是運作時的狀态,也就是說在整個JVM中,Runtime類是唯一一個與JVM運作狀态有關的類,并且都會預設提供有一個該類的執行個體化對象。
由于在每一個JVM程序裡面隻允許提供有一個Runtime類的對象,是以這個類的構造方法被預設私有化了,那麼就證明該類使用的是單例設計模式,并且單例設計模式一定會提供一個static方法擷取本類執行個體。

Runtime
由于Runtime類屬于單例設計模式,如果想要擷取執行個體化對象,那麼就可以依靠類中的getRuntime()方法完成:
- 擷取執行個體化對象: public static Runtime getRuntime();
通過這個類中的availableProcessors()方法可以擷取本機的CPU核心數:public int availableProcessors();
範例:擷取Runtime對象
public class JavaAPIDemo {
public static void main(String[] args) throws Exception{
Runtime run=Runtime.getRuntime(); //擷取執行個體化對象
System.out.println(run.availableProcessors());
}
}
但是除了以上的方法之外,在Runtime類裡面還提供有以下四個重要的操作方法:
- 擷取最大可用記憶體空間:public long maxMemory(),預設的配置為本機系統記憶體的4分之1;
- 擷取可用記憶體空間:public long totalMemory(),預設的配置為本機系統記憶體的64分之1;
- 擷取空閑記憶體空間:public long freeMemory();
- 手工進行GC處理:public void gc();
範例:觀察記憶體狀态
public class JavaAPIDemo {
public static void main(String[] args) throws Exception{
Runtime run=Runtime.getRuntime(); //擷取執行個體對象
System.out.println("【1】MAX_MEMORY:"+run.maxMemory());
System.out.println("【1】TOTAL_MEMORY:"+run.totalMemory());
System.out.println("【1】FREE_MEMORY:"+run.freeMemory());
String str="";
for (int x = 0; x < 30000; x++) {
str += x; //産生大量的垃圾空間
}
System.out.println("【2】MAX_MEMORY:"+run.maxMemory());
System.out.println("【2】TOTAL_MEMORY:"+run.totalMemory());
System.out.println("【2】FREE_MEMORY:"+run.freeMemory());
Thread.sleep(2000);
run.gc();
System.out.println("【3】MAX_MEMORY:"+run.maxMemory());
System.out.println("【3】TOTAL_MEMORY:"+run.totalMemory());
System.out.println("【3】FREE_MEMORY:"+run.freeMemory());
}
}
運作結果圖
面試題:請問什麼是GC?如何處理?
GC(Garbage Collector)垃圾收集器,是可以由系統自動調用的垃圾釋放功能,或者使用Runtime類中的gc()手工調用。
想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。
本内容視訊來源于
阿裡雲大學 下一篇:一文帶你了解Java其他基礎類庫 | 帶你學《Java語言進階特性》之十九 更多Java面向對象程式設計文章檢視此處