package edu.fjut.runtime;
/**簡介:
* Runtime(執行時):是一個封裝了JVM程式的類.每執行一個JAVA程式實際上
* 都是啟動了一個JVM程式,而每一個JVM程式都是對應這一個Runtime例項,此
* 例項是由JVM例項化的.在整個JVM中只存在一個Runtime類的物件.
*
* 在Runtime類的定義中沒有構造方法,因為其構造方法被私有化了,即被設計
* 成單例模式了,那麼在此類中必然有一個靜態方法可以返回本類的例項化物件.
*
* public static Runtime getRuntime();
*/
//每一個Runtime物件都是由JVM進行例項化的
//所以可以直接通過此類取得JVM的一些資訊
public class RuntimeDemo1 {
public static void main(String[] args) {
//通過runtime類的靜態方法進行例項化
Runtime run=Runtime.getRuntime();
//取得JVM的最大記憶體量,根據機器不同而不同
System.out.println("JVM最大記憶體:"+run.maxMemory());
//取得程式執行的空閒記憶體
System.out.println("JVM空閒記憶體:"+run.freeMemory());
//以下驗證使用String操作字串(增刪改查)容易降低效能
String str="Hello"+"world"+"!"+"Welcome to"+"China.";
System.out.println(str);
for(int i=0;i<1000;i++){
str+=i; //迴圈修改內容,會產生很多內容
}
System.out.println("操作String之後,JVM空閒記憶體:"+run.freeMemory());
//進行垃圾收集,釋放空間
run.gc();
System.out.println("進行垃圾回收之後,JVM空閒記憶體:"+run.freeMemory());
}
/*結果輸出:
* JVM最大記憶體:66650112
* JVM空閒記憶體:4955768
* Helloworld!Welcome toChina.
* 操作String之後,JVM空閒記憶體:4477360
* 進行垃圾回收之後,JVM空閒記憶體:5030072
*/
}
package edu.fjut.runtime;
import java.io.IOException;
//可以直接使用Runtime類執行本機的可執行程式
public class RuntimeDemo2 {
//開啟一個記事本,五秒後自動關閉
public static void main(String[] args) {
// 取得Runtime類的例項化物件
Runtime run=Runtime.getRuntime();
Process p=null;//定義程式變數
try {
p=run.exec("notepad.exe");// 呼叫本機記事本程式
Thread.sleep(5000);//讓此執行緒存活5秒
p.destroy();//結束此程式
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}