国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

透過 Java 參數來改善 Java 效能

2019-11-18 13:25:02
字體:
來源:轉載
供稿:網友

  透過 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 = 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().totalMemory());
  
  }
  
  }
  
  endtime = System.currentTimeMillis();
  
  System.out.println("Time: "+(endtime-starttime));
  
  }
  
  }
  
  
  
  執行的結果如下
  
  
  
  C:/java/tmp> java testHeap
  
  2031616
  
  5578752
  
  10498048
  
  Time: 651
  
  
  
  在這里,我們看到 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 -Xms50000000 testHeap
  
  49741824
  
  49741824
  
  49741824
  
  Time: 480
  
  
  
  這時候我們看到 total 的記憶體維持不變,原因很簡單,因為 testHeap
  
  使用記憶體的量,并沒有超過我們一開始抓到的量。但是有一個很有趣的現象是循環內的時間已經更短了,換一個角度來說,就是程式跑起來更有效率。這種以記憶體空間來換取執行時間的方式,也許并不是最棒的校
  
  調方法,但是卻是一個在不修改程式碼的方式下,提高效率的方法。當然,我們也可以限制記憶體的最大用量,參數則為 -Xmx 。一般說來,我并不建議您設定 -Xmx ,原因很簡單,因為一旦您設定了 -Xmx ,那么 JVM 所抓取的記憶體量到了這個值之後,便不會再抓取記憶體,也就是說您的程式將無法執行,我們看看底下的結果
  
  C:/java/tmp> java -Xmx5000000 testHeap
  
  2031616
  
  5578752
  
  Exception in thread "main" java.lang.OutOfMemoryError
  
  
  
  
  
  C:/java/tmp>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 香河县| 镇康县| 惠安县| 商水县| 台湾省| 高要市| 涟源市| 大荔县| 姜堰市| 旅游| 莱西市| 桃园市| 潼关县| 沛县| 开化县| 海南省| 黄平县| 万宁市| 五河县| 拉孜县| 剑川县| 宁化县| 安福县| 如东县| 北碚区| 邻水| 广州市| 蓝山县| 叙永县| 永宁县| 达尔| 平乐县| 凤城市| 屏东市| 甘谷县| 长葛市| 三河市| 宜春市| 四平市| 东海县| 同江市|