Java堆中对象的大小与方法有关

时间:2012-06-27 15:10:51

标签: java methods heap classloader

我知道堆上的原语和对象,但是方法的数量如何影响对象的堆大小?

例如:

public class A {
    int x;
    public getX() { return x; }
}

public class B {
    int x;

    public getX() { return x; }
    public getXString() { return String.valueOf(x); }
    public doMoreInterestingStuff() { return x * 42; }
    //etc
}

实例化时,两个对象都在堆上,两者都有内存分配给它们的原始x,但由于有更多的方法签名,B分配了更多的堆空间?或者只是在permGen空间?在这个例子中它是微不足道的,但是当在任何给定时间内存在超过100,000个这些对象时,我想它可以加起来。

1 个答案:

答案 0 :(得分:5)

  

方法的数量如何影响对象的堆大小?

没有。它对每个对象的大小没有影响,实际上它没有必要 - 它不像每个类型的对象有不同的方法。

显然,额外的方法占用内存“某处”(基本上与类相关),但它不是基于每个对象