类的实例与实例的成员变量的销毁

来源:互联网 发布:如何用备忘录编程 编辑:程序博客网 时间:2024/04/26 22:00
我对类的实例所占用的内存有个误区:我认为类的实例的内存大小为其下所有成员变量的内存之和,它可能占内存里的一大块区域。
比如:Class A{
  private int i;
},在堆内存里new一个A的实例a,请问a的内存大小是多少?是4个字节吗?

站在内存的角度上,它只分配了4个字节的空间给成员变量i,但它根本不知道什么是实例,因为实例是一个抽象的概念。所以我认为a没有占用任何内存,倒是它的成员变量i占有内存。

那么我们销毁a的时候,内存释放了吗?什么都没有释放,因为它就没占用内存。我们要真正要释放的是a下面的成员变量i的内存。我们平时所谓的销毁a,导致内存的释放,其实是因为垃圾回收帮忙了,a的销毁导致i的引用丢失,进而销毁了i,这才释放了内存。

也就是说,不管类的实例怎么置null,如果不能让它的成员变量引用丢失,那么内存是不会释放的。以上是我的一点看法。
0 0
原创粉丝点击