定义一个大对象,直接放入OLD区(对象占用的对内存占总的设置的内存一半以上),容易发生FGC

public class GcDemo {

    private static List list = new ArrayList();
    public static void main(String[] args) throws Exception {
            Thread.sleep(10000 * 2);
            happenMinorGC(111);
    }

    private static void happenMinorGC(int happenMinorGCIndex) throws Exception {
        for (int i = 0; i < happenMinorGCIndex; i++) {
             Thread.sleep(1000);
             MemoryObject m = new MemoryObject(1024 * 1024 * 7);
             list.add(m );
             if(list.size() >= 4){
                System.out.println('5');
                list.clear();
             }
        }
    }
}

class MemoryObject {
    private byte[] bytes;
    public MemoryObject(int objectSize) {
        this.bytes = new byte[objectSize];
    }
}


分析: 采用 java -XX:+UseSerialGC -Xms40M -Xmx40M -Xmn16M -verbose:gc -XX:+PrintGCDetails -XX:SurvivorRatio=6 GcDemo 执行:发生FGC


  S0        S1     E        O         P     YGC   YGCT  FGC   FGCT    GCT   
  0.00   0.00   2.00   0.00  10.65      0    0.000     0    0.000    0.000
  0.00   0.00   2.00   0.00  10.65      0    0.000     0    0.000    0.000
  0.00   0.00   2.00   0.00  10.65      0    0.000     0    0.000    0.000
  0.00   0.00   2.00   0.00  10.65      0    0.000     0    0.000    0.000
  0.00   0.00   2.00   0.00  10.65      0    0.000     0    0.000    0.000
  0.00   0.00  60.33   0.00  10.66      0    0.000     0    0.000    0.000
  0.00   5.68  60.33  29.17  10.70      1    0.007     0    0.000    0.007
  5.68   0.00  58.33  58.33  10.70      2    0.013     0    0.000    0.013
  0.00   5.68  59.37  87.50  10.70      3    0.020     0    0.000    0.020
  0.00   0.00  58.33   0.47  10.70      4    0.020     1    0.003    0.023
  0.00   0.00  58.33  29.64  10.70      5    0.023     1    0.003    0.026
  0.00   0.00  58.33  58.81  10.70      6    0.028     1    0.003    0.031
  0.00   0.00  59.02  87.97  10.70      7    0.031     1    0.003    0.035
  0.00   0.00  58.33   0.47  10.70      8    0.031     2    0.007    0.038
  0.00   0.00  58.33  29.64  10.70      9    0.035     2    0.007    0.041
  0.00   0.00  58.33  58.81  10.70     10    0.038     2    0.007    0.045
  0.00   0.00  58.79  87.97  10.70     11    0.042     2    0.007    0.048
  0.00   0.00  58.33   0.47  10.70     12    0.042     3    0.010    0.052
  0.00   0.00  58.33  29.64  10.70     13    0.046     3    0.010    0.056
  0.00   0.00  58.33  58.81  10.70     14    0.049     3    0.010    0.059
  0.00   0.00  58.63  87.97  10.70     15    0.053     3    0.010    0.063
  0.00   0.00  58.33   0.47  10.69     16    0.053     4    0.014    0.067
  0.00   0.00  58.33  29.64  10.69     17    0.057     4    0.014    0.071
  0.00   0.00  58.33  58.81  10.69     18    0.061     4    0.014    0.075
  0.00   0.00  58.53  87.97  10.69     19    0.064     4    0.014    0.078
  0.00   0.00  58.33   0.47  10.69     20    0.064     5    0.017    0.081

参考: http://xianqi-h.iteye.com/blog/1346491


你可能感兴趣的:(Java基础学习)