十八,Runtime類

1. 概述

每個jvm啓動的時候實際上對應了一個runtime實例,表示運行時.Runtime類封裝了運行時的環境.每一個 Java 應用程序都有一個 Runtime 類實例,使應用程序可以與其運行的環境相鏈接. html

Runtime類有自身的構造方法,通常不能實例化一個Runtime對象,應用程序也不能建立本身的 Runtime 類實例,但能夠經過 getRuntime 方法獲取當前Runtime運行時對象的引用. 一旦獲得了一個當前的Runtime對象的引用,就能夠調用Runtime對象的方法去控制Java虛擬機的狀態和行爲. java

Applet和其餘不被信任的代碼調用任何Runtime方法時,經常會引發SecurityException異常. 安全

2.API預覽

addShutdownHook(Thread hook) //註冊新的虛擬機來關閉掛鉤. jvm

availableProcessors() //Java 虛擬機返回可用處理器的數目. 學習

exec(String command) //在單獨的進程中執行指定的字符串命令. 編碼

exec(String[] cmdarray) //在單獨的進程中執行指定命令和變量. spa

exec(String[] cmdarray, String[] envp) //在指定環境的獨立進程中執行指定命令和變量. 線程

exec(String[] cmdarray, String[] envp, File dir) //在指定環境和工做目錄的獨立進程中執行指定的命令和變量. 設計

exec(String command, String[] envp) // 在指定環境的單獨進程中執行指定的字符串命令. code

exec(String command, String[] envp, File dir) //在有指定環境和工做目錄的獨立進程中執行指定的字符串命令.

exit(int status) //經過啓動虛擬機的關閉序列,終止當前正在運行的 Java 虛擬機.

freeMemory() //返回 Java 虛擬機中的空閒內存量.

gc() //運行垃圾回收器.

getRuntime() //返回與當前 Java 應用程序相關的運行時對象.

halt(int status) //強行終止目前正在運行的 Java 虛擬機.

load(String filename) //加載做爲動態庫的指定文件名.

loadLibrary(String libname) //加載具備指定庫名的動態庫.

maxMemory() //返回 Java 虛擬機試圖使用的最大內存量.

totalMemory() //返回 Java 虛擬機中的內存總量.

traceInstructions(on) //啓用/禁用指令跟蹤.

traceMethodCalls(on) //啓用/禁用方法調用跟蹤.

removeShutdownHook(Thread hook) //取消註冊某個先前已註冊的虛擬機關閉掛鉤.

runFinalization() //運行掛起 finalization 的全部對象的終止方法.

InputStream getLocalizedInputStream(InputStream in)

//已過期. JDK 1.1 開始,將本地編碼字節流轉換爲 Unicode 字符流的首選方法是使用 InputStreamReader BufferedReader .

OutputStream getLocalizedOutputStream(OutputStream out)

//已過期. JDK 1.1 開始,Unicode 字符流轉換爲本地編碼字節流的首選方法是使用 OutputStreamWriterBufferedWriter PrintWriter .

runFinalizersOnExit(value)

//已過期. 此方法自己具備不安全性.它可能對正在使用的對象調用終結方法,而其餘線程正在操做這些對象,從而致使不正確的行爲或死鎖.


3.Runtime應用

3.1Runtime 與進程

Runtime類能夠經過exec()方法直接運行本機程序.

示例:

package com.ares.runtimedemo;

public class RuntimeDemo {
	public static void main(String[] args) throws Exception {
		Runtime run = Runtime.getRuntime(); // 單例設計
		run.exec("freecell.exe");// 執行程序
	}

}

Runtime類能夠經過destroy()方法銷燬本機運行程序.

示例:

package org.lxh.runtimedemo;
public class RuntimeDemo02 {
	public static void main(String[] args) throws Exception {
		Runtime run = Runtime.getRuntime(); // 單例設計
		Process pro = run.exec("freecell.exe");// 執行程序
		Thread.sleep(2000);
		pro.destroy(); // 銷燬
	}

}



3.2Runtime取得系統資源

經過maxMemory(),totalMemory(),freeMemory()方法獲取系統資源

還有經過gc()方法能夠回收內存垃圾.

示例:

package org.ares.runtimedemo;

public class RuntimeDemo {
	public static void main(String[] args) throws Exception {
		Runtime run = Runtime.getRuntime(); // 單例設計
		System.out.println("** 最大的可用內存:" + run.maxMemory());
		System.out.println("** 總共內存空間:" + run.totalMemory());
		System.out.println("計算前的空閒的內存空間:" + run.freeMemory());
		String str = "";
		for (int i = 0; i < 10000; i++) {
			str += i; // 會產生大量的垃圾
		}
		System.out.println("計算後的空閒的內存空間:" + run.freeMemory());
		run.gc(); // 進行垃圾收集
		System.out.println("垃圾收集以後的空閒的內存空間:" + run.freeMemory());
	}
}


參考:
http://www.cnblogs.com/lixiaolun/p/4320754.html


20150428


JAVA學習筆記系列

--------------------------------------------

                    聯繫方式

--------------------------------------------

        Weibo: ARESXIONG

        E-Mail: aresxdy@gmail.com

------------------------------------------------
相關文章
相關標籤/搜索