每個jvm啓動的時候實際上對應了一個runtime實例,表示運行時.Runtime類封裝了運行時的環境.每一個 Java 應用程序都有一個 Runtime 類實例,使應用程序可以與其運行的環境相鏈接. html
Runtime類有自身的構造方法,通常不能實例化一個Runtime對象,應用程序也不能建立本身的 Runtime 類實例,但能夠經過 getRuntime 方法獲取當前Runtime運行時對象的引用. 一旦獲得了一個當前的Runtime對象的引用,就能夠調用Runtime對象的方法去控制Java虛擬機的狀態和行爲. java
當Applet和其餘不被信任的代碼調用任何Runtime方法時,經常會引發SecurityException異常. 安全
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 字符流轉換爲本地編碼字節流的首選方法是使用 OutputStreamWriter、BufferedWriter 和 PrintWriter 類.
runFinalizersOnExit(value)
//已過期. 此方法自己具備不安全性.它可能對正在使用的對象調用終結方法,而其餘線程正在操做這些對象,從而致使不正確的行爲或死鎖.
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(); // 銷燬 } }
經過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
------------------------------------------------