Java对象所拥有的寿命,和基本型别是不一样的。当你使用new来产生一个Java对象,即便离开了生存空间,该对象依然存在。因此如果你这么写:
{String s =new String("a string");
} /* end of scope */
s这个reference将在生存空间之外消失无踪。但是,s先前所指的那个String对象,依然会继续占用内存。但是单看上面这段程序代码,无法访问该对象,因为唯一指向它的那个reference,已经离开了其生存空间
Java对象所拥有的寿命,和基本型别是不一样的。当你使用new来产生一个Java对象,即便离开了生存空间,该对象依然存在。因此如果你这么写:
{String s =new String("a string");
} /* end of scope */
s这个reference将在生存空间之外消失无踪。但是,s先前所指的那个String对象,依然会继续占用内存。但是单看上面这段程序代码,无法访问该对象,因为唯一指向它的那个reference,已经离开了其生存空间