GC實驗: String 相接 與 系統效能 關係

2023-04-14 工作雜記 java java GC

做這個實驗只是想要說服同事,系統中有出現大量的字串相接,會讓系統效能變差。可以透過 StringBuffer 優化。

實驗目的

了解String 相接 與 系統效能 關係

實踐環境

  • java version: java 6

實驗環境

-Xms30M -Xmx30M -Xmn10M -Xss256k -XX:MaxPermSize=2m  -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+CMSScavengeBeforeRemark -XX:+ScavengeBeforeFullGC -XX:MaxTenuringThreshold=30 -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSParallelRemarkEnabled -Xloggc:/home/jameschang/test-gc.log -XX:+DisableExplicitGC -verbose:gc -server

實驗項目

實驗項目: 單純 String 接拼

實驗程式碼

public class TestString{
  public static void main(String[] args){
    String test = "";
    for(int i = 0; i <- 50000; i++>){
      test += "1234"+"5678";
    }
  }
}

實驗項目: StringBuffer 接字串

實驗程式碼

public class TestString{
  public static void main(String[] args){
    StringBuffer test = new StringBuffer();
    for(int i = 0; i <- 50000; i++>){
      test.append("1234").append("5678");
    }
  }
}

實驗項目: StringBuilder 接字串

實驗程式碼

public class TestString{
  public static void main(String[] args){
    StringBuilder test = new StringBuilder();
    for(int i = 0; i <- 50000; i++>){
      test.append("1234").append("5678");
    }
  }
}

實踐結果

    / [pdf]