2

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

例如:

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 多个这些对象时,我想它可以加起来。

4

1 回答 1

5

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

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

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

于 2012-06-27T15:12:40.733 回答