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

原创 2012年03月21日 10:56:40
public class GcDemo {

    private static List<MemoryObject> list = new ArrayList<MemoryObject>();
    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


sizeof计算对象所占内存的大小详解

sizeof 怎样计算整型数组、字符数组、二维数组、类(是否为菱形继承、是否为虚继承等各种情况)的大小,非常详细的解释!!!...
  • skyroben
  • skyroben
  • 2016年11月17日 22:23
  • 1196

JVM —— Java 对象占用空间大小计算

为什么要知道 Java 对象占用空间大小? Java 里面一切都是对象,每天都在使用的 Java 对象占据多少内存空间,原来竟是这样......
  • wenniuwuren
  • wenniuwuren
  • 2016年03月22日 22:04
  • 5834

一个Java对象到底占用多大内存?

一个Java对象到底占用多大内存? 最近在读《深入理解Java虚拟机》,对Java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一个Java对象到底占用...
  • aaa1117a8w5s6d
  • aaa1117a8w5s6d
  • 2015年01月04日 20:55
  • 9178

一个Java对象到底占多大内存?

一个Java对象到底占用多大内存? 最近在读《深入理解Java虚拟机》,对Java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一个Java对象到底占用多大...
  • L25000
  • L25000
  • 2015年04月06日 20:45
  • 183

一个java对象到底占多大内存?

最近在读《深入理解Java虚拟机》,对Java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一个Java对象到底占用多大内存? 在网上搜到了一篇博客讲的非常好:http:...
  • chenleixing
  • chenleixing
  • 2015年02月09日 22:01
  • 1120

C# 能否获取一个对象所占内存的大小

今日,在项目重构的时候忽然想到一个问题,一个类哪些成员的增加,会影响一个类所占内存的大小?C#有没有办法知道一个对象占多少内存呢?      第一个问题:很快想到是类的非静态的字段、属性。 ...
  • WaitForFree
  • WaitForFree
  • 2013年07月25日 16:55
  • 1842

一个Java对象到底占多大内存?

最近在读《深入理解Java虚拟机》,对Java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一个Java对象到底占用多大内存? 在网上搜到了一篇博客讲的非常好:ht...
  • dufufd
  • dufufd
  • 2017年08月02日 09:09
  • 123

一个Java对象到底占多大内存?

原文地址:http://www.admin10000.com/document/5925.html 最近在读《深入理解Java虚拟机》,对Java对象的内存布局有了进一步的认识,于是脑子里自然而...
  • u013510614
  • u013510614
  • 2016年07月02日 12:41
  • 155

精确计算一个Java对象占用的内存大小

转载于:http://blog.csdn.net/hoszb/article/details/5846069   《java优化占用内存的方法 -- 雪的痕迹》一文中提到: " java做的...
  • zgmzyr
  • zgmzyr
  • 2012年05月22日 23:03
  • 683

Java计算一个对象占用内存的大小

Java计算一个对象占用内存的大小
  • liangrui1988
  • liangrui1988
  • 2015年05月27日 17:13
  • 1150
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:定义一个大对象,直接放入OLD区(对象占用的对内存占总的设置的内存一半以上),容易发生FGC
举报原因:
原因补充:

(最多只允许输入30个字)