Java虛擬機器中獲得Runtime例項的方法是什麼?

千鋒武漢發表於2021-07-07

  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所示:

01

  檔案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所示:

02

  此時,會在Windows系統中產生一個新的程式notepad.exe,可以透過工作管理員進行觀察,如圖3所示。

03

  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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章