如果对象有许多方法,那么对象实例化是否会影响性能



这里只是一点无聊的好奇心。

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

例如,假设我有一个类,它有(在这里插入大得离谱的数字)许多不同的方法可以调用。与我没有方法的情况相比,JVM生成该类的实例所需的时间是否更长?

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

因此,对象有多少方法并不重要:两千个或两千个——创建对象将花费完全相同的时间。

顺便说一句,方法调用也是如此——与只有少量方法的对象相比,调用具有大量方法的对象的方法不会对性能造成影响。

另请参阅

  • 什么';方法在内存中表示吗

我不会说java,但在C++等中。非虚拟方法可以存储为全局函数(wth approximate name mangling),在实例化时不需要额外的空间。虚拟方法必须填充到VMT中,它可能在编译时构建,并在实例化时存储在对象中的单个指针。

所以没有,我看不到大量方法有任何成功。

不,我不认为有什么性能会受到衡量或影响。我会说不,并拒绝你或其他任何人回来提供相反的有意义的数据。

如果你的对象是那么大,我认为是时候重构了。

最新更新