新的起點(diǎn) 新的開(kāi)始

          快樂(lè)生活 !

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

                  一提起如何解決內(nèi)存溢出問(wèn)題,動(dòng)輒使用復(fù)雜的監(jiān)控軟件,比如Jprofile等,其實(shí)我們可以通過(guò)Runtime來(lái)獲得當(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: 通過(guò)Runtime獲取當(dāng)前JVM使用的Heap大小[未登錄](méi) 2009-05-21 09:55 kimi

          通過(guò)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)論排行榜

          主站蜘蛛池模板: 江油市| 绵竹市| 大洼县| 新河县| 喀喇| 岐山县| 昌图县| 平和县| 灌阳县| 那坡县| 德令哈市| 桐庐县| 吉林市| 蒲江县| 隆昌县| 泸溪县| 北碚区| 九龙坡区| 织金县| 汝城县| 宜春市| 肇州县| 甘孜| 黎平县| 常山县| 泾阳县| 柘城县| 建宁县| 绥德县| 奉新县| 凯里市| 绥芬河市| 长宁县| 黑龙江省| 留坝县| 高淳县| 武冈市| 嘉禾县| 青川县| 南华县| 类乌齐县|