Java的垃圾收集机制特点有哪些呢?
Java的垃圾收集机制特点有哪些呢?
1.垃圾收集器的工作目标是回收已经无用的对象的内存空间,从而避免内存渗漏体的产生,节省内存资源,避免程序代码的崩溃。 2.垃圾收集器判断一个对象的内存空间是否无用的标准是:如果该对象不能再被程序中任何一个"活动的部分"所引用,此时我们就说,该对象的内存空间已经无用。
所谓"活动的部分",是指程序中某部分参与程序的调用,正在执行过程中,尚未执行完毕。 3.垃圾收集器线程虽然是作为低优先级的线程运行,但在系统可用内存量过低的时候,它可能会突发地执行来挽救内存资源。当然其执行与否也是不可预知的。 4.垃圾收集器不可以被强制执行,但程序员可以通过调用System。
gc方法来建议执行垃圾收集器。 5.不能保证一个无用的对象一定会被垃圾收集器收集,也不能保证垃圾收集器在一段Java语言代码中一定会执行。因此在程序执行过程中被分配出去的内存空间可能会一直保留到该程序执行完毕,除非该空间被重新分配或被其他方法回收。
由此可见,完全彻底地根绝内存渗漏体的产生也是不可能的。但是请不要忘记,Java的垃圾收集器毕竟使程序员从手工回收内存空间的繁重工作中解脱了出来。设想一个程序员要用C或C++来编写一段10万行语句的代码,那么他一定会充分体会到Java的垃圾收集器的优点! 6.同样没有办法预知在一组均符合垃圾收集器收集标准的对象中,哪一个会被首先收集。
7.循环引用对象不会影响其被垃圾收集器收集。 8.可以通过将对象的引用变量(reference variables,即句柄handles)初始化为null值,来暗示垃圾收集器来收集该对象。但此时,如果该对象连接有事件监听器(典型的 AWT组件),那它还是不可以被收集。
所以在设一个引用变量为null值之前,应注意该引用变量指向的对象是否被监听,若有,要首先除去监听器,然后才可以赋空值。 9.每一个对象都有一个finalize( )方法,这个方法是从Object类继承来的。 10.finalize( )方法用来回收内存以外的系统资源,就像是文件处理器和网络连接器。
该方法的调用顺序和用来调用该方法的对象的创建顺序是无关的。换句话说,书写程序时该方法的顺序和方法的实际调用顺序是不相干的。请注意这只是finalize( )方法的特点。 11.每个对象只能调用finalize( )方法一次。如果在finalize( )方法执行时产生异常(exception),则该对象仍可以被垃圾收集器收集。
12.垃圾收集器跟踪每一个对象,收集那些不可到达的对象(即该对象没有被程序的任何"活的部分"所调用),回收其占有的内存空间。但在进行垃圾收集的时候,垃圾收集器会调用finalize( )方法,通过让其他对象知道它的存在,而使不可到达的对象再次"复苏"为可到达的对象。
既然每个对象只能调用一次finalize( )方法,所以每个对象也只可能"复苏"一次。 13.finalize( )方法可以明确地被调用,但它却不能进行垃圾收集。 14.finalize( )方法可以被重载(overload),但只有具备初始的finalize( )方法特点的方法才可以被垃圾收集器调用。
15.子类的finalize( )方法可以明确地调用父类的finalize( )方法,作为该子类对象的最后一次适当的操作。但Java编译器却不认为这是一次覆盖操作(overriding),所以也不会对其调用进行检查。 16.当finalize( )方法尚未被调用时,System。
runFinalization( )方法可以用来调用finalize( )方法,并实现相同的效果,对无用对象进行垃圾收集。
答:调节肠道微生态平衡 , 动物肠道内的优势菌群主要是厌氧菌,菌群之间的平衡是畜禽正 常生长的保证。发酵词料中的乳酸杆菌、酵母菌、芽孢杆菌可以相互 调节,抑制有害菌...详情>>
问:dell win8系统i7 怎么分盘 这只有一个c盘可以吗 如果分盘 怎么分详解...
答:操作步骤 1、经典桌面下系统下同时按住键盘上“Win键”和“X”键打开系统菜单 ,选择“磁盘管理”。 2、对准想要划分的分区右键,选择“压缩卷” 。 3、填入想...详情>>
答:没关系,你可以关机重启看看详情>>