gc()测试

public class TestGC {

  /**
   * @param args
   * @author strong
   * 2011-7-18_下午04:35:28
   */
  public static void main(String[] args) {
    int count =1000000;

    long total1 = Runtime.getRuntime().totalMemory();
    long starttime1 = System.currentTimeMillis();
    for(int i=0;i<count;i++){
      String d = "dddddddddddddd";
      System.out.println(d);
    }
    long free1 =Runtime.getRuntime().freeMemory();
    long endtime1 = System.currentTimeMillis();
    Runtime.getRuntime().gc();//如果放在循环中将需要时间比较长。11ms/9094ms
   // System.gc();
    long free2 =Runtime.getRuntime().freeMemory();
    long endtime2 = System.currentTimeMillis();
    System.out.println(count+"次---gc前消耗内存:"+(total1-free1)/1024+"KB");
    System.out.println(count+"次---gc消耗内存:"+(total1-free2)/1024+"KB");
    System.out.println(count+"次---gc前消耗的时间:"+(endtime1-starttime1)+"ms");
    System.out.println(count+"次---gc消耗的时间:"+(endtime2-endtime1)+"ms");
    
    System.out.println(count+"次---消耗的时间:"+(endtime2-starttime1)+"ms");

  }

}
 
100次---gc前消耗内存:317KB
100次---gc消耗内存:134KB
100次---gc前消耗的时间:3ms
100次---gc消耗的时间:12ms
100次---消耗的时间:15ms

100次---gc前消耗内存:317KB
100次---gc消耗内存:134KB
100次---gc前消耗的时间:7ms
100次---gc消耗的时间:11ms
100次---消耗的时间:18ms


1000次---gc前消耗内存:341KB
1000次---gc消耗内存:134KB
1000次---gc前消耗的时间:106ms
1000次---gc消耗的时间:16ms
1000次---消耗的时间:122ms

1000次---gc前消耗内存:341KB
1000次---gc消耗内存:134KB
1000次---gc前消耗的时间:122ms
1000次---gc消耗的时间:10ms
1000次---消耗的时间:132ms

10000次---gc前消耗内存:1453KB
10000次---gc消耗内存:134KB
10000次---gc前消耗的时间:545ms
10000次---gc消耗的时间:12ms
10000次---消耗的时间:557ms

10000次---gc前消耗内存:1463KB
10000次---gc消耗内存:134KB
10000次---gc前消耗的时间:571ms
10000次---gc消耗的时间:30ms
10000次---消耗的时间:601ms

100000次---gc前消耗内存:11251KB
100000次---gc消耗内存:134KB
100000次---gc前消耗的时间:1839ms
100000次---gc消耗的时间:17ms
100000次---消耗的时间:1856ms

100000次---gc前消耗内存:11251KB
100000次---gc消耗内存:134KB
100000次---gc前消耗的时间:1990ms
100000次---gc消耗的时间:11ms
100000次---消耗的时间:2001ms

1000000次---gc前消耗内存:12275KB
1000000次---gc消耗内存:-2231KB
1000000次---gc前消耗的时间:20161ms
1000000次---gc消耗的时间:10ms
1000000次---消耗的时间:20171ms

1000000次---gc前消耗内存:12275KB
1000000次---gc消耗内存:-2231KB
1000000次---gc前消耗的时间:20724ms
1000000次---gc消耗的时间:16ms
1000000次---消耗的时间:20740ms

你可能感兴趣的:(java)