Java Runtime類


Java Runtime類用於與Java執行時環境互動。Java Runtime類提供了執行進程,呼叫GC,獲取總記憶體和可用記憶體等的方法。一個java應用程式只有一個java.lang.Runtime類範例。

Runtime.getRuntime()方法返回Runtime類的單例範例。

Java Runtime類的重要方法

編號 方法 描述
1 public static Runtime getRuntime() 返回Runtime類的範例。
2 public void exit(int status) 終止當前的虛擬機器。
3 public void addShutdownHook(Thread hook) 註冊新的勾點執行緒。
4 public Process exec(String command)throws IOException 在單獨的進程中執行給定的命令。
5 public int availableProcessors() 返回可用的處理器的編號。
6 public long freeMemory() 返回JVM中的可用記憶體量。
7 public long totalMemory() 返回JVM中的總記憶體量。

Java Runtime exec()方法

public class Runtime1{  
 public static void main(String args[])throws Exception{  
  Runtime.getRuntime().exec("notepad");//will open a new notepad  
 }  
}

如何在Java執行關閉計算機系統
可以使用shutdown -s命令關閉系統。 對於Windows作業系統,需要提供完整的關閉命令路徑,例如:c:\\\\Windows\\\\System32\\\\shutdown

在這裡可以使用-s switch來關閉系統,-r switch來重新啟動系統,-t switch來指定時間延遲。

public class Runtime2{  
 public static void main(String args[])throws Exception{  
  Runtime.getRuntime().exec("shutdown -s -t 0");  
 }  
}

如何在Java中關閉Windows系統

public class Runtime2{  
 public static void main(String args[])throws Exception{  
  Runtime.getRuntime().exec("c:\\\\Windows\\\\System32\\\\shutdown -s -t 0");  
 }  
}

如何在Java中重新啟動Windows系統

public class Runtime3{  
 public static void main(String args[])throws Exception{  
  Runtime.getRuntime().exec("shutdown -r -t 0");  
 }  
}

Java Runtime availableProcessors()方法

public class Runtime4{  
 public static void main(String args[])throws Exception{  
  System.out.println(Runtime.getRuntime().availableProcessors());  
 }  
}

Java Runtime freeMemory()和totalMemory()方法
在給定的程式中,建立10000個範例後,空閒記憶體將小於之前的空閒記憶體。 但是在gc()呼叫之後,將獲得更多的可用記憶體。

package com.yiibai;

public class MemoryTest {
    public static void main(String args[]) throws Exception {
        Runtime r = Runtime.getRuntime();
        System.out.println("Total Memory: " + r.totalMemory());
        System.out.println("Free Memory: " + r.freeMemory());

        for (int i = 0; i < 10000; i++) {
            new MemoryTest();
        }
        System.out.println("After creating 10000 instance, Free Memory: " + r.freeMemory());
        System.gc();
        System.out.println("After gc(), Free Memory: " + r.freeMemory());
    }
}

執行上面範例程式碼,得到以下結果:

Total Memory: 128974848
Free Memory: 126930016
After creating 10000 instance, Free Memory: 126930016
After gc(), Free Memory: 127734760