构造代码块是在内存的方法区中,随类的加载而加载,为所有类对象初始化相同属性
第二个问题就要说垃圾回收机制的原理了,这里我就直接摘抄面试大全里张老师给的解释了:
对于GC(垃圾回收机制)来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范(不强制执行时)并不保证GC一定会执行,这也是垃圾回收机制的随机性,不确定什么时候会回收垃圾。 |