疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

软件培训:Java中对象的销毁


 

   Java中的基本数据类型变量和对象的名称引用变量如定义在方法中,都为局部变量。但对象本身不一定是局部生命周期。如函数外存在其他对该对象的引用变量,则该对象的生命周期延伸至该其他引用变量所在的块。

  如从被调用函数参数引用传值或返回值到主调用函数所在的对象类型变量中,则该对象都仍存在(但被调用函数的该对象的引用变量生命周期结束,因此引用变量是局部变量),此时对象突破了局部变量的局部生命期。

  Java对象销毁

  Java中垃圾收集器自动地定期扫描Java对象的动态内存,并将所有的引用对象加上标记,在对象运行结束后(无引用变量对该对象进行关联),清除其标记,并将所有无标记的对象作为垃圾进行回收,释放垃圾对象所占的内存空间。

  对象运行结束后或生命周期结束时,将成为垃圾对象,但并不意味着就立即会被回收,仅当垃圾收集器空闲或内存不足时,才会回收他们。

  Java中每个对象都拥有一个finalize()方法:protected void finalize()throws Throwable{}垃圾回收器在回收对象时自动调用对象的finalize()方法来释放系统资源。

  finalize()函数原型:

  protected void finalize()

  Called by the garbage collector on an object when garbage collection determines that

  there are no more references to the object.