Java虛擬機器中獲得Runtime例項的方法是什麼?
Runtime類用於表示Java虛擬機器執行時的狀態,它用於封裝Java虛擬機器程式。每次使用“java”命令啟動Java虛擬機器時都會對應一個Runtime例項,並且只有一個例項,應用程式會透過該例項與其執行時的環境相連。應用程式不能建立自己的Runtime例項,若想在程式中獲得一個Runtime例項,可以透過getRuntime()方法獲取與之相關的Runtime物件,具體方式如下:
Runtime run = Runtime.getRuntime();
由於Runtime類封裝了Java虛擬機器程式,因此,可以透過該類的例項物件來獲取當前虛擬機器的相關資訊。接下來透過一個案例來演示Runtime類的使用,如檔案1所示。
public class Example12 { public static void main(String[] args) { Runtime rt = Runtime.getRuntime(); // 獲取Java程式關聯的執行時物件 System.out.println("處理器的個數: " + rt.availableProcessors() + "個"); System.out.println("空閒記憶體大小: " + rt.freeMemory() / 1024 / 1024 + "M"); System.out.println("最大可用記憶體大小: " + rt.maxMemory() / 1024 / 1024 + "M"); } }
執行結果如圖1所示:
檔案1中,透過“Runtime.getRuntime();”方法建立了一個Runtime的例項物件,並分別呼叫該物件的availableProcessors()方法、freeMemory()方法和maxMemory()方法,將當前虛擬機器的處理器個數、空閒記憶體大小和可用最大記憶體大小的資訊列印出來。
需要注意的是,由於每臺計算機的配置和效能不同,該檔案的列印結果也會有所不同。另外,空閒記憶體大小和可用最大記憶體大小都是以位元組為單位計算的,檔案1中程式的執行結果已經換算成了以兆(M)為單位的值。
Runtime類中提供了一個exec()方法,該方法用於執行一個DOS命令,從而實現和在命令列視窗中輸入DOS命令同樣的效果。例如,可以透過執行“notepad.exe”命令開啟一個Windows自帶的記事本,程式程式碼如檔案2所示。
import java.io.IOException; public class Example13 { public static void main(String[] args) throws IOException { Runtime rt = Runtime.getRuntime(); // 建立Runtime例項物件 rt.exec("notepad.exe"); // 呼叫exec()方法 } }
檔案2中,呼叫了Runtime物件的exec()方法,並將系統命令“notepad.exe”作為引數傳遞給方法。執行程式後會在桌面上開啟一個記事本,如圖2所示:
此時,會在Windows系統中產生一個新的程式notepad.exe,可以透過工作管理員進行觀察,如圖3所示。
Runtime類的exec()方法會返回一個Process物件,該物件表示作業系統的一個程式,此處為notepad.exe程式,透過Process物件可以對產生的新程式進行管理,如關閉此程式只需呼叫destroy()方法即可。
接下來透過一個案例來實現開啟的記事本並在3秒後自動關閉的功能,如檔案3所示。
public class Example14 { public static void main(String[] args) throws Exception { // 建立一個Runtime例項物件 Runtime rt = Runtime.getRuntime(); // 得到表示程式的Process物件 Process process = rt.exec("notepad.exe"); // 程式休眠3秒 Thread.sleep(3000); // 關閉程式 process.destroy(); } }
在檔案3中,透過呼叫Process物件的destroy()方法,將開啟的記事本關閉了。為了突出演示的效果,使用了Thread類的靜態方法sleep(long millis)使程式休眠了3秒,因此,程式執行後,會看到開啟的記事本在3秒後自動關閉。
Java虛擬機器中獲得Runtime例項的方法是什麼?以上就是小編為大家整理的相關文章了,希望能夠給大家帶來幫助!
本文來自千鋒教育,轉載請註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2780040/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java虛擬機器是什麼?Java虛擬機
- Java虛擬機器1:什麼是JavaJava虛擬機
- Java虛擬機器是怎麼實現synchronized的Java虛擬機synchronized
- 虛擬機器、容器和沙箱是什麼關係?虛擬機
- 什麼是伺服器虛擬化,虛擬化的優勢!伺服器
- Dalvik虛擬機器、Java虛擬機器與ART虛擬機器虛擬機Java
- 憑什麼別的虛擬機器叫虛擬機器,Python的叫直譯器?虛擬機Python
- 【Linux】Docker主要優勢是什麼?與虛擬機器區別是什麼?LinuxDocker虛擬機
- VMware安裝虛擬機器時,全名、使用者名稱、虛擬機器名是什麼。修改虛擬機器為靜態ip虛擬機
- java虛擬機器和Dalvik虛擬機器Java虛擬機
- Android 虛擬機器 Vs Java 虛擬機器Android虛擬機Java
- 什麼是伺服器虛擬化呢伺服器
- Linux中虛擬化是什麼?有什麼用?Linux
- 物理機和虛擬機器有什麼不同虛擬機
- 什麼是虛擬主機,有什麼優勢,雲南ip伺服器伺服器
- mac免費的虛擬機器怎麼安裝?VMware虛擬機器免費獲取教程Mac虛擬機
- Java 虛擬機器之三:Java虛擬機器的記憶體結構Java虛擬機記憶體
- Java虛擬機器(JVM)Java虛擬機JVM
- Java虛擬機器(轉)Java虛擬機
- Docker無法執行java虛擬機器報錯There is insufficient memory for the Java RuntimeDockerJava虛擬機
- VMware虛擬機器優化,提高虛擬機器執行速度的方法?虛擬機優化
- Java虛擬機器的組成Java虛擬機
- VMware虛擬機器獲取教程虛擬機
- Java虛擬機器(JVM)和Python直譯器有什麼區別?Java虛擬機JVMPython
- JAVA虛擬機器-方法區與字串常量池Java虛擬機字串
- Java 虛擬機器總結給面試的你(中)Java虛擬機面試
- 單例項DG切換中的虛擬IP單例
- 深入理解 python 虛擬機器:原來虛擬機器是這麼實現閉包的Python虛擬機
- Python中replace()的用法是什麼?附例項!Python
- Java虛擬機器的記憶體是如何分佈的Java虛擬機記憶體
- openstack -- ocata 建立的卷無法連線到虛擬機器例項虛擬機
- 《深入理解java虛擬機器》學習筆記2——Java記憶體溢位例項Java虛擬機筆記記憶體溢位
- 初學Python過程中,例項方法和類方法的區別是什麼?Python
- 備戰- Java虛擬機器Java虛擬機
- Java虛擬機器16:MetaspaceJava虛擬機
- Java虛擬機器面試題Java虛擬機面試題
- .Net框架 = Java虛擬機器?框架Java虛擬機
- java~graalVM虛擬機器JavaLVM虛擬機