快轉到主要內容

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

·269 字·1 分鐘·
PolloChang
作者
PolloChang
我是一隻雞

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

實驗目的
#

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

實踐環境
#

  • java version: java 6

實驗環境
#

1
-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 接拼
#

實驗程式碼
#

1
2
3
4
5
6
7
8
public class TestString{
  public static void main(String[] args){
    String test = "";
    for(int i = 0; i <- 50000; i++>){
      test += "1234"+"5678";
    }
  }
}

實驗項目: StringBuffer 接字串
#

實驗程式碼
#

1
2
3
4
5
6
7
8
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 接字串
#

實驗程式碼
#

1
2
3
4
5
6
7
8
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]