Runtime 源碼閱讀

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();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章