这里只是有点闲散的好奇心。
基本上,如果我有一个只有少量原始数据成员的对象,它会占用少量内存,并且根本不需要很长时间来创建。但是,如果我有很多与该对象相关的方法会发生什么?对象实例化是否必须考虑这些因素?
例如,假设我有一个Class(在这里插入荒谬的大数)我可以调用的不同方法的数量。与没有方法相比,JVM是否需要更长时间来创建该类的实例?
答案 0 :(得分:6)
不,带有方法的Class
一次存储在一个单独的内存位置(即PermGen
),并且给定类的每个对象只有一个对其类型的引用(Class
)
因此,您的对象有多少方法无关紧要:两千或两千 - 对象创建将花费相同的时间。
BTW同样适用于方法调用 - 当调用具有大量对象的对象的方法与只有很少的对象相比时,没有性能损失。
答案 1 :(得分:2)
不,我不相信会对您造成影响或影响。我会说不,并且无视你或其他任何人反复提供有意义的数据。
如果您的对象 大,我会说是时候重构了。
答案 2 :(得分:2)
我不能代表java,但是在C ++等中。非虚方法可以存储为全局函数(使用名称修改)并且在实例化时不需要额外的空间。虚拟方法必须填充到VMT中,VMT可能在编译时构建,并且在实例化时存储在对象中的单个指针。
所以不,我没有看到大量方法的任何打击。