Runtime
/**
* 每一個 Java 應用程序都有一個關聯的運行時對象
*
* @author unascribed
* @see java.lang.Runtime#getRuntime()
* @since 1.0
*/
public class Runtime {
/**
* 當前 JVM 的運行時對象
*/
private static final Runtime currentRuntime = new Runtime();
/**
* JavaSE 的版本
*/
private static Version version;
/**
* 獲取當前 Java 應用程序的運行時對象
*/
public static Runtime getRuntime() {
return currentRuntime;
}
/**
* 終止當前運行的 Java 虛擬機,非 0 狀態碼錶示異常退出。
*
* @param status 終止狀態碼
*/
public void exit(int status) {
final SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkExit(status);
}
Shutdown.exit(status);
}
/**
* 返回此 JVM 可用的邏輯處理器數量
* @since 1.4
*/
public native int availableProcessors();
/**
* 此 JVM 能使用的最大內存
* @since 1.4
*/
public native long maxMemory();
/**
* 返回此 JVM 當前可用的內存總量
*/
public native long totalMemory();
/**
* 返回此 JVM 空閒的近似內存總量
*/
public native long freeMemory();
/**
* 註冊一個 JVM 關閉鉤子
*
* @param hook 關閉鉤子
*/
public void addShutdownHook(Thread hook) {
final SecurityManager sm = System.getSecurityManager();
if (sm != null) {
sm.checkPermission(new RuntimePermission("shutdownHooks"));
}
ApplicationShutdownHooks.add(hook);
}
/**
* 強制終止此 JVM
*
* @param status 終止狀態
*/
public void halt(int status) {
final SecurityManager sm = System.getSecurityManager();
if (sm != null) {
sm.checkExit(status);
}
Shutdown.halt(status);
}
/**
* 運行垃圾收集器,建議此 JVM 在合適的時刻執行垃圾收集
*/
public native void gc();
/**
* 在單獨的進程中執行目標命令
*
* @param command 一個特定的系統命令
*/
public Process exec(String command) throws IOException {
return exec(command, null, null);
}
/**
* 在工作目錄下執行目標命令,並提供指定的環境變量。
*
* @param cmdarray 目標命令及參數
* @param envp 以 name=value 指定的環境變量數組
* @param dir 子進程的工作目錄
* @since 1.3
*/
public Process exec(String[] cmdarray, String[] envp, File dir)
throws IOException {
return new ProcessBuilder(cmdarray)
.environment(envp)
.directory(dir)
.start();
}