常用類庫----15.4Runtime類

Runtime描述的是運行時的狀態,在每一個JVM進程之中都會提供唯一的一個Runtime類實例化對象,開發者可以通過Runtime類對象獲取與JVM有關的運行時狀態。
在這裏插入圖片描述

由於Runtime類中只存在一個實例化對象,所以在Runtime類中默認將其構造方法封裝(單例設計模擬),這樣開發者就必須利用Runtime類中提供的getRuntime()方法(爲static方法)來獲取實例化對象,隨後就可以獲取一些系統的相關信息。
Runtime類常用方法
在這裏插入圖片描述
範例:獲取本機的CPU處理器數量

public class JavaAPIDemo344a {
       public static void main(String[] args) {
		 Runtime runtime=Runtime.getRuntime();   //獲取Runtime實例化對象
		 System.out.println(runtime.availableProcessors());   //獲取可用的CPU處理器數量
	}
}

執行結果

4

由於筆者使用計算機爲4核CPU,所以當時用availableProcessors()返回的內容就是4。

程序執行中除了需要CPU外,還需要提供有內存的支持,在Runtime類中定義有三個內存數據的返回方法:maxMemory()、totalMemory()、freeMemory()。注意:取得內存信息時,返回的數據爲long。long型數據使用主要有兩種情況:表示文件大小和表示日期時間。
範例:獲取主機內存信息

public class avaAPIDemo344b {
       public static void main(String[] args) {
		Runtime run=Runtime.getRuntime();  //獲取實例化對象
		System.out.println("最大可用內存:"+run.maxMemory());//獲取最大可用內存
		System.out.println("總共可用內存"+run.totalMemory());//獲取總共可用內存
		System.out.println("空閒內存"+run.freeMemory());   //獲取空閒內存
		
	}
}

執行結果

最大可用內存:1883242496
總共可用內存:128974848
空閒內存:126929976

本程序獲取了當前可用的內存信息,實際上當用戶不進行任何操作時,最大的可用內存爲本機內存的1/4,而可用內存爲本機內存的1/64。
java本身提供有垃圾收集機制,對於GC線程而言,除了可以不定期處理外,也可以利用Runtime類中提供的gc()方法進行手動內存釋放。
範例:觀察GC操作

public class JavaAPIDemo345 {
       public static void main(String[] args) {
		Runtime run=Runtime.getRuntime(); //獲取實例化對象
		System.out.println("【1】可用內存"+run.totalMemory());   //獲取可用內存
		System.out.println("【1】空閒內存"+run.freeMemory());    //獲取空閒內存
		String str="";
		for (int x = 0; x < 3000; x++) {
			str+=x;                                        //產生垃圾空間
		}
		System.out.println("【2】可用內存"+run.totalMemory());   //獲取可用內存
		System.out.println("【2】空閒內存"+run.freeMemory());    //獲取空閒內存
		run.gc();                                             //內存釋放
		System.out.println("【3】可用內存"+run.totalMemory());   //獲取可用內存
		System.out.println("【3】空閒內存"+run.freeMemory());    //獲取空閒內存
	}
}

執行結果

【1】可用內存128974848
【1】空閒內存126929976
【2】可用內存128974848
【2】空閒內存98738488
【3】可用內存163053568
【3】空閒內存161161776

通過空閒內存的對比實現演示了垃圾產生前後的內存空間大小以及GC之後的空閒內存大小。

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