新的起點(diǎn) 新的開始

          快樂生活 !

          通過Runtime獲取當(dāng)前JVM使用的Heap大小

                  一提起如何解決內(nèi)存溢出問題,動(dòng)輒使用復(fù)雜的監(jiān)控軟件,比如Jprofile等,其實(shí)我們可以通過Runtime來獲得當(dāng)前Heap大小,使用Heap大小。測(cè)試如下:

            1.  設(shè)置JVM屬性: -Xms64m -Xmx256m 最小64M 最大使用256M.
            2.  運(yùn)行如下代碼:
          public static void main(String [] args) throws Exception {
            
                   
          int mb = 1024*1024;  
            
                  
          //Getting the runtime reference from system  
                   Runtime runtime = Runtime.getRuntime();  
             
                  System.out.println(
          "##### Heap utilization statistics [MB] #####");  
                 
          // use memory
                  List testList = new ArrayList();
                  
          for(int i =0; i<5000;i++){
                      Thread.sleep(
          1000);
                  
          for(int i1 =0; i1<5000; i1++){
                  testList.add(
          new String[1000]);
                  }

                  System.out.println(
          "Used Memory:"
                       
          + (runtime.totalMemory() - runtime.freeMemory()) / mb+"M");
                  }

                   System.out.println(
          "Free Memory:"   + runtime.freeMemory() / mb+"M");
                   System.out.println(
          "Total Memory:" + runtime.totalMemory() / mb+"M");
                   System.out.println(
          "Max Memory:" + runtime.maxMemory() / mb+"M");

               }



          }
          運(yùn)行結(jié)果如下:
          ##### Heap utilization statistics [MB] #####
          Used Memory:19M
          Used Memory:38M
          Used Memory:57M
          Used Memory:77M
          Used Memory:96M
          Used Memory:115M
          Used Memory:134M
          Used Memory:154M
          Used Memory:173M
          Used Memory:192M
          Used Memory:211M
          Used Memory:230M
          Used Memory:249M
          Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
                  at prepare.NewClass.main(NewClass.java:32)
          Java Result: 1
          成功生成(總時(shí)間:15 秒)

          總結(jié):runtime.totalMemory() 獲取Heap大小,runtime.freeMemory() 剩余Heap大小。



          posted on 2009-05-20 21:59 advincenting 閱讀(1599) 評(píng)論(1)  編輯  收藏

          評(píng)論

          # re: 通過Runtime獲取當(dāng)前JVM使用的Heap大小[未登錄] 2009-05-21 09:55 kimi

          通過java.lang.management中的類,能夠獲得更詳細(xì)的信息  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          公告

          Locations of visitors to this pageBlogJava
        1. 首頁(yè)
        2. 新隨筆
        3. 聯(lián)系
        4. 聚合
        5. 管理
        6. <2009年5月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          統(tǒng)計(jì)

          常用鏈接

          留言簿(13)

          隨筆分類(71)

          隨筆檔案(179)

          文章檔案(13)

          新聞分類

          IT人的英語(yǔ)學(xué)習(xí)網(wǎng)站

          JAVA站點(diǎn)

          優(yōu)秀個(gè)人博客鏈接

          官網(wǎng)學(xué)習(xí)站點(diǎn)

          生活工作站點(diǎn)

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 镇坪县| 社旗县| 廉江市| 陵水| 大关县| 独山县| 于都县| 丽水市| 佛冈县| 阿拉善盟| 阳东县| 怀集县| 无极县| 福州市| 东安县| 镇平县| 湖北省| 大田县| 湘阴县| 庐江县| 平和县| 富裕县| 宿州市| 五家渠市| 新绛县| 吉木萨尔县| 托里县| 南川市| 绥滨县| 沅陵县| 庄浪县| 禹城市| 榆中县| 马鞍山市| 资兴市| 陇川县| 微博| 明溪县| 绥芬河市| 台前县| 钟山县|