发布网友 发布时间:2022-04-23 05:53
共1个回答
热心网友 时间:2022-04-23 00:37
垃圾回收器是Java平台中用的最频繁的一种对象销毁方法。垃圾回收器会全程侦测Java应用程序的运行情况。当发现有些对象成为垃圾时,垃圾回收器就会销毁这些对象,并释放这些对象所占用的内存空间。在这里,程序开发人员需要知道,在哪些情况下垃圾回收器会认为这些对象是垃圾对象。通常情况下,如果发生以下两种情况时,系统会认为这些对象是垃圾对象,需要销毁。
一是将一个NULL值赋值给对象。如用户先建立了一个对象str1。对象用完了之后,再利用赋值语句,将NULL值赋值给这个对象str1,即使用str1=NULL的方式将NULL值赋值给这个对象。此时这个对象与内存中对象的存储地址之间就失去了联系。此时内存中的对象就好像成为了一个无主的对象,就会被垃圾回收器销毁。不过这也有例外。如现在同一个对象有两个名字,分别为str1与str2。此时若只是将NULL值赋值给str1,那么内存的这个对象仍然有一个主人,即str2。此时这个对象还暂时不会被垃圾回收器回收。除非在代码中讲这个对象所关联的所有对象名字都赋值为NULL。此时这个对象才变为无主的对象,才会被垃圾回收器回收。在Java中定义自己的工具库
二是对象其超出了作用范围,这个这个对象就被认为是垃圾对象,被被垃圾回收器回收并释放内存。其实对象跟变量一样,其也有作用域。当超过这个作用域的话,跟变量一样,这个对象也就无效了,其他地方不能够再引用这个对象。此时这个对象就是名存实亡了。为此垃圾回收器也把这种超过作用范围的对象当作垃圾对象来处理。所以说,如果程序员要让对象中的某些成员变量或者成员方法一直有效的话,就需要采用static关键字,让其在变量销毁时仍然有效,或则仍然可以调用这些成员变量与成员方法。