我知道堆上的原语和对象,但是方法的数量如何影响对象的堆大小?
例如:
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个这些对象时,我想它可以加起来。
答案 0 :(得分:5)
方法的数量如何影响对象的堆大小?
没有。它对每个对象的大小没有影响,实际上它没有必要 - 它不像每个类型的对象有不同的方法。
显然,额外的方法占用内存“某处”(基本上与类相关),但它不是基于每个对象。