对象占用空间

℡╲_俬逩灬. 提交于 2019-11-27 01:25:35

1、对象分为字段和方法,字段分为:static,non-static。方法分为static,non-static,virtual

2、static字段,放在静态存储区,所有的对象共享。non-static字段,每个对象拥有自己的一份内存copy

3、static方法,non-static方法,virtual方法都放在代码区,所有的对象共享。调用方法的时候,如何区分方法内的数据是那个对象的呢?

  方法内的数据是方法绑定对象的数据,因为调用方法的时候,需要指定对象。对于virtual方法,还要增加一个额外指针,用于在运行时,根据对象的真实类型绑定方法。注意:就算有多个virtual方法,也只有一个额外指针。

4、因此,对象占用的空间大小就是:

  不存在virtual方法:就是实例字段的大小

  存在virtual方法(一个或多个)就是:实例字段的大小+virtual方法的额外指针

转载于:https://www.cnblogs.com/nzbbody/p/3382973.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!