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

Eri*_*ric 2 java heap methods 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
}
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 5

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

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

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