java对象不具备和基本类型一样的生命周期.当你用new创建一个java对象时,它可以存活于作用域之外.
例如代码如下:
{
String name=new String("hello world");
} //end of cope
引用name在作用域终点就消失了.然而:name指向的String对象仍继续占据内存的空间.在这一小段代码中,我们似乎无法想象再访问这个对象,因为对它唯一的引用已超出了作用域的范围.
但是我们可以通过传递对象的引用,传递给需要的方法
{
String name=new String("hello world");
test(name);
}
public void test(String name){
}
这样这个对象又可以再其他地方使用了.
那么事实证明,由new创建的对象,只要你需要,就会一直保留下去.这样,需要C++编程问题在Java中就会完全消失.在C++中,最难的问题视乎在于:程序员并不能从语言本身中获得任何帮助,以确保在需要调用对象时,该对象仍可用.更重要的是:在C++中,一旦使用完对象后,你必须确保要销毁对象.
这样便带给我们另一个问题.如果java让这个对象继续存在,那么靠什么才能防止这些对象填满内存空间,今儿阻塞你的程序呢?
java有一个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会再被引用的对象.随后,释放这些对象的内存空间,并提供其他新的对象使用.也就是说,你根本不需要担心内存会后的问题.你只需要创建对象,一旦不再需要,他们就会自动消失.