本文目录一览

1,怎么判断干垃圾还是可回收物要通俗易懂的语言

可回收垃圾简单来说就是可以拿出去卖钱的废弃物,如塑料瓶、废书等等;干垃圾是指砖瓦陶瓷、渣土、卫生间废纸、纸巾等难以回收的废弃物及果壳、尘土、食品袋(盒)。
搜一下:怎么判断干垃圾还是可回收物,要通俗易懂的语言

怎么判断干垃圾还是可回收物要通俗易懂的语言

2,Java 的垃圾回收如何判断哪个对象可以被回收

java对象符合以下条件便会被垃圾回收:1.所有实例都没有活动线程访问。2.没有被其他任何实例访问的循环引用实例。 3.Java 中有不同的引用类型。判断实例是否符合垃圾收集的条件都依赖于它的引用类型。在编译过程中作为一种优化技术,Java 编译器能选择给实例赋 null 值,从而标记实例为可回收。class Animal public static void main(String[] args) Animal lion = new Animal();System.out.println("Main is completed.");}protected void finalize() System.out.println("Rest in Peace!");}}
这涉及到堆和栈的问题。栈空间中的变量引用指向堆空间中的对象,一旦堆空间中的某个对象没有哪个引用指向它,jvm就认为这个对象已经没用了,开始垃圾回收
有一种内部机制是一个链表保存一个对象引用的所有对象,当一个对象不在任何一个链表中时,认为该对象不可达,即没有被任何对象引用,可以被垃圾回收。好象还用到了图论的知识,细节不记得了。
一般情况下java中对象可被回收的前提是:该对象不再被引用。例如: object o = new object();o = null;此时第一步 new 出来的对象不再被引用,垃圾回收器在回收的时候便会把这个对象清理掉。特殊情况下 ,java中存在弱引用(weakreference<> 很少用,不确定拼写的是否准确哈),对象即使被弱引用,垃圾回收机制也是可以回收的,我们正常直接赋值的引用属于强引用,除了系统内存不足等因素外,垃圾回收机制是不会清理的。
java是自动对那些不用的对象进行回收也可以指定对象使其失效来告知垃圾回收器回收这个对象如:String string = "hanxiucao";string = null;这样垃圾回收器就知道了要回收string对象但是垃圾回收器否真的回收string对象不一定交个好友啊:934765410

Java 的垃圾回收如何判断哪个对象可以被回收

3,java 中的垃圾收集怎样判断一个对象可以被收集

jvm要做垃圾回收时,首先要判断一个对象是否还有可能被使用。那么如何判断一个对象是否还有可能被用到?如果我们的程序无法再引用到该对象,那么这个对象就肯定可以被回收,这个状态称为不可达。当对象不可达,该对象就可以作为回收对象被垃圾回收器回收。那么这个可达还是不可达如何判断呢?答案就是GC roots ,也就是根对象,如果从一个对象没有到达根对象的路径,或者说从根对象开始无法引用到该对象,该对象就是不可达的。以下三类对象在jvm中作为GC roots,来判断一个对象是否可以被回收 (通常来说我们只要知道虚拟机栈和静态引用就够了)。虚拟机栈(JVM stack)中引用的对象(准确的说是虚拟机栈中的栈帧(frames)) ,我们知道,每个方法执行的时候,jvm都会创建一个相应的栈帧(栈帧中包括操作数栈、局部变量表、运行时常量池的引用),栈帧中包含这在方法内部使用的所有对象的引用(当然还有其他的基本类型数据),当方法执行完后,该栈帧会从虚拟机栈中弹出,这样一来,临时创建的对象的引用也就不存在了,或者说没有任何gc roots指向这些临时对象,这些对象在下一次GC时便会被回收掉。方法区中类静态属性引用的对象:静态属性是该类型(class)的属性,不单独属于任何实例,因此该属性自然会作为gc roots。只要这个class存在,该引用指向的对象也会一直存在。class 也是会被回收的,在面后说明本地方法栈(Native Stack)引用的对象。一个class要被回收准确的说应该是卸载,必须同时满足以下三个条件堆中不存在该类的任何实例;加载该类的classloader已经被回收;该类的java.lang.Class对象没有在任何地方被引用,也就是说无法通过反射再带访问该类的信息。其实这四类引用的区别就在于GC时是否回收该对象强引用(Strong) 就是我们平时使用的方式 A a = new A();强引用的对象是不会被回收的;软引用(Soft) 在jvm要内存溢出(OOM)时,会回收软引用的对象,释放更多内存;弱引用(Weak) 在下次GC时,弱引用的对象是一定会被回收的;虚引用(Phantom) 对对象的存在时间没有任何影响,也无法引用对象实力,唯一的作用就是在该对象被回收时收到一个系统通知。
java中提供了一些和垃圾收集打交道的类,而且提供了一种强行执行垃圾收集的方法--调用system.gc(),但这同样是个不确定的方法。java 中并不保证每次调用该方法就一定能够启动垃圾收集,它只不过会向jvm发出这样一个申请,到底是否真正执行垃圾收集,一切都是个未知数。

java 中的垃圾收集怎样判断一个对象可以被收集


文章TAG:垃圾  垃圾回收  回收  怎么  垃圾回收怎么判断是否回收  
下一篇