最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Runtime類詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

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

一、概述

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

二、常見(jiàn)的應(yīng)用

1、內(nèi)存管理:

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

//此實(shí)例來(lái)自《java核心技術(shù)》卷一
 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); 
    } 
}

編譯后運(yùn)行結(jié)果如下(不同的機(jī)器不同時(shí)間運(yùn)行的結(jié)果也不一定一樣):

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)境中,可以在多任務(wù)操作系統(tǒng)中使用Java去執(zhí)行其他特別大的進(jìn)程(也就是程序)。ecec()方法有幾種形式命名想要運(yùn)行的程序和它的輸入?yún)?shù)。ecec()方法返回一個(gè)Process對(duì)象,可以使用這個(gè)對(duì)象控制Java程序與新運(yùn)行的進(jìn)程進(jìn)行交互。ecec()方法本質(zhì)是依賴于環(huán)境。

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

//此實(shí)例來(lái)自《Java核心技術(shù)》卷一
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對(duì)象后,在新程序開(kāi)始運(yùn)行后就可以使用Process的方法了??梢杂胐estory()方法終結(jié)子進(jìn)程,也可以使用waitFor()方法等待程序直到子程序結(jié)束,exitValue()方法返回子進(jìn)程結(jié)束時(shí)返回的值。如果沒(méi)有錯(cuò)誤,將返回0,否則返回非0。下面是關(guān)于ecec()方法的例子的改進(jìn)版本。例子被修改為等待,直到運(yùn)行的進(jìn)程退出:

//此實(shí)例來(lái)自《Java核心技術(shù)》卷一
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());
  }
}

下面是運(yùn)行的結(jié)果(當(dāng)關(guān)閉記事本后,會(huì)接著運(yùn)行程序,打印信息):

Notepad returned 0

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

當(dāng)子進(jìn)程正在運(yùn)行時(shí),可以對(duì)標(biāo)準(zhǔn)輸入輸出進(jìn)行讀寫。getOutputStream()方法和getInPutStream()方法返回對(duì)子進(jìn)程的標(biāo)準(zhǔn)輸入和輸出。

以上所述是小編給大家介紹的Java Runtime類詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java常用API類之Math System tostring用法詳解

    Java常用API類之Math System tostring用法詳解

    System類代表系統(tǒng),系統(tǒng)級(jí)的很多屬性和控制方法都放置在該類的內(nèi)部。該類位于java.lang包,Java 的 Math 包含了用于執(zhí)行基本數(shù)學(xué)運(yùn)算的屬性和方法,如初等指數(shù)、對(duì)數(shù)、平方根和三角函數(shù),toString() 方法用于返回以一個(gè)字符串表示的 Number 對(duì)象值
    2021-10-10
  • springboot中@Async默認(rèn)線程池導(dǎo)致OOM問(wèn)題

    springboot中@Async默認(rèn)線程池導(dǎo)致OOM問(wèn)題

    這篇文章主要介紹了springboot中@Async默認(rèn)線程池導(dǎo)致OOM問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Spring Boot啟動(dòng)流程分析

    Spring Boot啟動(dòng)流程分析

    本文給大家介紹spring boot是怎樣啟動(dòng)和啟動(dòng)做了哪些事情。具體內(nèi)容詳情大家通過(guò)本文詳細(xì)學(xué)習(xí)吧
    2017-09-09
  • Java?集合框架?Queue?和?Stack?體系

    Java?集合框架?Queue?和?Stack?體系

    這篇文章主要介紹了Java?集合框架Queue和Stack體系,Stack?繼承自Vector,并拓展了五個(gè)允許將容器視為棧結(jié)構(gòu)的操作,Queue接口定義了隊(duì)列的能力,它繼承自Collection,更多相關(guān)內(nèi)容需要得小伙伴可以參考一下
    2022-06-06
  • Spring mvc AJAX技術(shù)實(shí)現(xiàn)原理解析

    Spring mvc AJAX技術(shù)實(shí)現(xiàn)原理解析

    這篇文章主要介紹了Spring mvc AJAX技術(shù)實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • java中封裝JDBC工具類的實(shí)例分析

    java中封裝JDBC工具類的實(shí)例分析

    在本篇內(nèi)容里小編給各位分享了一篇關(guān)于java中封裝JDBC工具類的實(shí)例分析,對(duì)此有興趣的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • MyBatis XPathParser解析器使用范例詳解

    MyBatis XPathParser解析器使用范例詳解

    這篇文章主要介紹了關(guān)于MyBatis中解析器XPathParser的實(shí)際使用實(shí)踐,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2022-07-07
  • 精通Java List 按字段提取對(duì)象

    精通Java List 按字段提取對(duì)象

    這篇文章主要介紹了精通Java List 按字段提取對(duì)象的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • java使用字符畫一個(gè)海綿寶寶

    java使用字符畫一個(gè)海綿寶寶

    這篇文章主要為大家詳細(xì)介紹了java使用字符畫一個(gè)海綿寶寶,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • java獲取微信accessToken的方法

    java獲取微信accessToken的方法

    這篇文章主要為大家詳細(xì)介紹了java獲取微信accessToken的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評(píng)論

威海市| 万安县| 松潘县| 兰溪市| 广河县| 濮阳县| 剑阁县| 辽源市| 尤溪县| 阿合奇县| 宁远县| 景东| 永兴县| 郴州市| 米泉市| 星子县| 承德县| 调兵山市| 肃北| 大城县| 锦州市| 平山县| 山东| 山丹县| 南汇区| 宜兴市| 大名县| 手游| 筠连县| 定安县| 襄城县| 博客| 东方市| 汉沽区| 连州市| 鄄城县| 琼中| 碌曲县| 安乡县| 定结县| 伊川县|