熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

透過 Java 參數來改善 Java 效能

2013-11-15 11:52:20  來源: JSP教程 

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

From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19789.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.