欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java Runtime類詳解_動力節(jié)點Java學院整理

 更新時間:2017年04月18日 09:47:27   投稿:mrr  
Runtime類封裝了運行時的環(huán)境。每個 Java 應用程序都有一個 Runtime 類實例,使應用程序能夠與其運行的環(huán)境相連接。下面通過本文給大家分享Java Runtime類詳解,需要的朋友參考下吧

一、概述

      Runtime類封裝了運行時的環(huán)境。每個 Java 應用程序都有一個 Runtime 類實例,使應用程序能夠與其運行的環(huán)境相連接。一般不能實例化一個Runtime對象,應用程序也不能創(chuàng)建自己的 Runtime 類實例,但可以通過 getRuntime 方法獲取當前Runtime運行時對象的引用。一旦得到了一個當前的Runtime對象的引用,就可以調用Runtime對象的方法去控制Java虛擬機的狀態(tài)和行為。 當不被信任的代碼調用任何Runtime方法時,常常會引起SecurityException異常。

二、常見的應用

1、內存管理:

Java提供了無用單元自動收集機制。通過totalMemory()和freeMemory()方法可以知道對象的堆內存有多大,還剩多少。Java會周期性的回收垃圾對象(未使用的對象),以便釋放內存空間。但是如果想先于收集器的下一次指定周期來收集廢棄的對象,可以通過調用gc()方法來根據需要運行無用單元收集器。一個很好的試驗方法是先調用gc()方法,然后調用freeMemory()方法來查看基本的內存使用情況,接著執(zhí)行代碼,然后再次調用freeMemory()方法看看分配了多少內存。下面的程序演示了這個構想。

//此實例來自《java核心技術》卷一
 class MemoryDemo{ 
    public static void main(String args[]){ 
        Runtime r = Runtime.getRuntime(); 
        long mem1,mem2; 
        Integer someints[] = new Integer[1000]; 
        System.out.println("Total memory is :" + r.totalMemory()); 
        mem1 = r.freeMemory(); 
        System.out.println("Initial free is : " + mem1); 
        r.gc(); 
        mem1 = r.freeMemory(); 
        System.out.println("Free memory after garbage collection : " + mem1); 
        //allocate integers 
        for(int i=0; i<1000; i++) someints[i] = new Integer(i);  
        mem2 = r.freeMemory(); 
        System.out.println("Free memory after allocation : " + mem2); 
        System.out.println("Memory used by allocation : " +(mem1-mem2));  
        //discard Intergers 
        for(int i=0; i<1000; i++) someints[i] = null; 
        r.gc(); //request garbage collection 
        mem2 = r.freeMemory(); 
        System.out.println("Free memory after collecting " + "discarded integers : " + mem2); 
    } 
}

編譯后運行結果如下(不同的機器不同時間運行的結果也不一定一樣):

Total memory is :2031616
Initial free is : 1818488
Free memory after garbage collection : 1888808
Free memory after allocation : 1872224
Memory used by allocation : 16584
Free memory after collecting discarded integers : 1888808

2、執(zhí)行其他程序

在安全的環(huán)境中,可以在多任務操作系統(tǒng)中使用Java去執(zhí)行其他特別大的進程(也就是程序)。ecec()方法有幾種形式命名想要運行的程序和它的輸入參數。ecec()方法返回一個Process對象,可以使用這個對象控制Java程序與新運行的進程進行交互。ecec()方法本質是依賴于環(huán)境。

下面的例子是使用ecec()方法啟動windows的記事本notepad。這個例子必須在Windows操作系統(tǒng)上運行。

//此實例來自《Java核心技術》卷一
class ExecDemo { 
    public static void main(String args[]){ 
        Runtime r = Runtime.getRuntime(); 
        Process p = null; 
        try{ 
            p = r.exec("notepad"); 
        } catch (Exception e) { 
            System.out.println("Error executing notepad."); 
        } 
    } 
}

ecec()還有其他幾種形式,例子中演示的是最常用的一種。ecec()方法返回Process對象后,在新程序開始運行后就可以使用Process的方法了。可以用destory()方法終結子進程,也可以使用waitFor()方法等待程序直到子程序結束,exitValue()方法返回子進程結束時返回的值。如果沒有錯誤,將返回0,否則返回非0。下面是關于ecec()方法的例子的改進版本。例子被修改為等待,直到運行的進程退出:

//此實例來自《Java核心技術》卷一
class ExecDemoFini {
  public static void main(String args[]){
    Runtime r = Runtime.getRuntime();
    Process p = null;
    try{
      p = r.exec("notepad");
      p.waitFor();
    } catch (Exception e) {
      System.out.println("Error executing notepad.");
    }
    System.out.println("Notepad returned " + p.exitValue());
  }
}

下面是運行的結果(當關閉記事本后,會接著運行程序,打印信息):

Notepad returned 0

請按任意鍵繼續(xù). . .

當子進程正在運行時,可以對標準輸入輸出進行讀寫。getOutputStream()方法和getInPutStream()方法返回對子進程的標準輸入和輸出。

以上所述是小編給大家介紹的Java Runtime類詳解_動力節(jié)點Java學院整理,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • Spring Security Remember me使用及原理詳解

    Spring Security Remember me使用及原理詳解

    這篇文章主要介紹了Spring Security Remember me使用及原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • Java線程安全中的原子性淺析

    Java線程安全中的原子性淺析

    這篇文章主要介紹了Java線程安全中的原子性,原子性是指一條線程在執(zhí)行一系列程序指令操作時,該線程不可中斷。一旦出現(xiàn)中斷,那么就可能會導致程序執(zhí)行前后的結果不一致
    2023-02-02
  • IDEA中設置背景顏色的步驟

    IDEA中設置背景顏色的步驟

    在IntelliJ IDEA中,用戶可以通過訪問【Settings】或【Preferences】菜單,進入【Editor】>【ColorScheme】選項來選擇和調整編輯區(qū)域的顏色方案,此外,通過【Appearance & Behavior】>【Appearance】選項
    2024-09-09
  • Java實現(xiàn)動態(tài)驗證碼生成

    Java實現(xiàn)動態(tài)驗證碼生成

    這篇文章主要為大家詳細介紹了Java實現(xiàn)動態(tài)驗證碼生成,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 淺析java 的 static 關鍵字用法

    淺析java 的 static 關鍵字用法

    這篇文章主要介紹了淺析java 的 static 關鍵字用法的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • mybatis中的擴展實現(xiàn)源碼解析

    mybatis中的擴展實現(xiàn)源碼解析

    這篇文章主要介給大家紹了關于mybatis中擴展實現(xiàn)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • JAVA 運算符歸納總結

    JAVA 運算符歸納總結

    這篇文章主要對Java語法基礎之運算符進行了詳細的歸納總結,需要的朋友可以參考
    2017-04-04
  • SpringBoot中實現(xiàn)代理方式

    SpringBoot中實現(xiàn)代理方式

    這篇文章主要介紹了SpringBoot中實現(xiàn)代理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java編程實現(xiàn)高斯模糊和圖像的空間卷積詳解

    Java編程實現(xiàn)高斯模糊和圖像的空間卷積詳解

    這篇文章主要介紹了Java編程實現(xiàn)高斯模糊和圖像的空間卷積詳解,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • hashtable桶數通常會取一個素數分析

    hashtable桶數通常會取一個素數分析

    這篇文章主要介紹了hashtable桶數通常會取一個素數分析的相關資料,需要的朋友可以參考下
    2016-12-12

最新評論