**Runtime 類**用於表示 Java 虛擬機運行時的狀態,用於封裝 Java 虛擬機進程。每次使用 Java 命令啓動 Java 虛擬機時都會對應一個 Runtime 實例。並且只有一個實例,應用程序會通過該實例與其運行時環境相連。應用程序不能創建自己的 Runtime 實例,若想在程序中獲得一個 Runtime 實例,可以通過 **getRuntime()** 方法獲取與之相關的 Runtime 對象。
Runtime runtime = Runtime.getRuntime();
由於 Runtime 類封裝了 Java虛擬機進程,所以,可以通過該類的實例對象來獲取當前虛擬機的相關信息。
package com.wang.demo;
public class RuntimeDemo1 {
public static void main(String[] args) {
//獲取 Java程序關聯的運行時對象
Runtime runtime = Runtime.getRuntime();
System.out.println("空閒內存大小:" + runtime.freeMemory() / 1024 / 1024 + "M");
System.out.println("處理器的個數:" + runtime.availableProcessors() + "個");
System.out.println("最大可用內存:" + runtime.maxMemory() / 1024 / 1024 + "M");
}
}
----------------------------------------------------------------------------------
結果:空閒內存大小:118M
處理器的個數:8個
最大可用內存:1787M
通過 Runtime.getRuntime() 方法創建一個 Runtime 的實例對象,並且分別調用該對象的 freeMemory() 方法,availableProcessors() 方法和 maxMemory() 方法,將當前虛擬機的空閒內存數,處理器個數和最大可用內存數的信息打印出來。注意,最大可用內存數和空閒內存數 都是以字節爲單位計算的,以上代碼中,已經將結果換算成了以兆 爲單位。
Runtime 類中提供了一個 exec() 方法,用於執行一個 DOS命令 ,可以實現與在命令行窗口中輸入 DOS命令一樣的效果。可以試一試,打開記事本。
package com.wang.demo;
import java.io.IOException;
public class RuntimeDemo2 {
public static void main(String[] args) {
//創建 Runtime 實例對象
Runtime runtime = Runtime.getRuntime();
try {
//調用 exec() 方法
runtime.exec("notepad.exe");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Runtime 類的 exec() 方法將返回一個 Process 對象 ,該對象表示操作系統的一個進程,這裏是 notepad.exe 進程,通過 Process 對象可以對產生的新進程進行管理,如關閉此進程,調用 destroy() 方法既可以。
打開記事本5秒後關閉
package com.wang.demo;
import java.io.IOException;
public class RuntimeDemo3 {
public static void main(String[] args) throws IOException, InterruptedException {
//創建一個 Runtime 實例對象
Runtime runtime = Runtime.getRuntime();
//得到表示進程的 Process 對象
Process process = runtime.exec("notepad.exe");
//程序休眠 5秒
Thread.sleep(5000);
//關閉進程
process.destroy();
}
}