如果对象有很多方法,是否会对对象即时性产生影响?

时间:2012-02-29 22:57:51

标签: java performance oop methods objectinstantiation

这里只是有点闲散的好奇心。

基本上,如果我有一个只有少量原始数据成员的对象,它会占用少量内存,并且根本不需要很长时间来创建。但是,如果我有很多与该对象相关的方法会发生什么?对象实例化是否必须考虑这些因素?

例如,假设我有一个Class(在这里插入荒谬的大数)我可以调用的不同方法的数量。与没有方法相比,JVM是否需要更长时间来创建该类的实例?

3 个答案:

答案 0 :(得分:6)

不,带有方法的Class一次存储在一个单独的内存位置(即PermGen),并且给定类的每个对象只有一个对其类型的引用(Class

因此,您的对象有多少方法无关紧要:两千或两千 - 对象创建将花费相同的时间。

BTW同样适用于方法调用 - 当调用具有大量对象的对象的方法与只有很少的对象相比时,没有性能损失。

另见

答案 1 :(得分:2)

不,我不相信会对您造成影响或影响。我会说不,并且无视你或其他任何人反复提供有意义的数据。

如果您的对象 大,我会说是时候重构了。

答案 2 :(得分:2)

我不能代表java,但是在C ++等中。非虚方法可以存储为全局函数(使用名称修改)并且在实例化时不需要额外的空间。虚拟方法必须填充到VMT中,VMT可能在编译时构建,并且在实例化时存储在对象中的单个指针。

所以不,我没有看到大量方法的任何打击。