Java 參數來改善 Java 效能

來源:互聯網
上載者:User

透過 Java 參數來改善 Java 效能 (艾群科技 蕭松瀛)

作者  : 艾群科技 蕭松瀛
  
  我們都知道, Java 在執行的時候會吃掉不少記憶體,而當記憶體不夠
用的時候, JVM 會向系統要求更大的記憶體來使用。但是實際上對於 Ja
 va 來說,我們會發現資料可以存在許多不同的地方,其中有兩個重要的
是  Heap 以及 Stack 。這兩者有什麼差別,我們在以後會提到,但是在
這之前,我們先來看一個程式: 
  
  public class testHeap
  {
      public static void main(String argv[])
      {
          StringBuffer sb = new StringBuffer();
          long starttime;
          long endtime;
          starttime = System.currentTimeMillis();
          for(int i=0; i <=100000; i++)
          {
              sb.append(i).append("hello").append(i);
              if(i % (100000/2) == 0)
              {
                 System.out.println(Runtime.getRuntime().totalMe
 mory());
              }
          }
          endtime = System.currentTimeMillis();
         System.out.println("Time: "+(endtime-starttim
 e));
      }
  }
  
  執行的結果如下
  
  C:/java/tmp> java testHeap
  2031616
  5578752
  10498048
  Time: 651
  
 在這裡,我們看到 totalMemory 不斷的上升,當然,這是正常現象,但
是實際上我們可以控制 JVM 一開始就抓取的記憶體大小,這樣的好處是
 JVM 一開始就抓取了大量的 Heap 。怎麼做呢? 我們先用 java -X 來看
看他有哪些額外的參數可以下,沒錯,我看到我感興趣的幾個參數 
  
      -Xms <size>         set initial Java heap size
      -Xmx <size>         set maximum Java heap size
      -Xss <size>         set java thread stack size
  
 接著,我想要讓 JVM 一開始就抓取大量的記憶體,因此我選擇 -Xms 這
個參數,底下是我的執行結果: 
  
  C:/java/tmp> java -Xms50000000 testHeap
  49741824
  49741824
  49741824
  Time: 480
  
 這時候我們看到 total 的記憶體維持不變,原因很簡單,因為 testHea
p 使用記憶體的量,並沒有超過我們一開始抓到的量。但是有一個很有趣
的現象是迴圈內的時間已經更短了,換一個角度來說,就是程式跑起來更
有效率。這種以記憶體空間來換取執行時間的方式,也許並不是最棒的校
調方法,但是卻是一個在不修改程式碼的方式下,提高效率的方法。當然
,我們也可以限制記憶體的最大用量,參數則為 -Xmx 。一般說來,我並
不建議您設定 -Xmx ,原因很簡單,因為一旦您設定了 -Xmx ,那麼 JVM
  所抓取的記憶體量到了這個值之後,便不會再抓取記憶體,也就是說您
的程式將無法執行,我們看看底下的結果 
  
  C:/java/tmp> java -Xmx5000000 testHeap
  2031616
  5578752
 Exception in thread "main" java.lang.OutOfMemoryError
 
  
  C:/java/tmp>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.