6.14
1.System.gc()和RunTime.gc()提示jvm要进行垃圾回收,但是立即执行垃圾回收还是延迟执行垃圾回收是由JVM决定的
GC:Grabage Collection 目的和回收的时间:但存在没有引用的对象和超过作用域的对象的时候就会触发垃圾回收机制,用于识别并丢弃应用不在使用的对象和释放重用的资源。
2.finalize方法 是object对象的方法之一:但grabage collector回收对象时 对象就会运行finalize方法 但是在java中如果内存充足的话就可能永远也不会执行垃圾回收:(finalize的功能回收特殊渠道申请的内存)
3.如果一个对象的引用为null那么垃圾回收器会不会立即回收该对象
不会立即回收该对象,在下一个垃圾回收周期对象是可回收的。
4.java堆的结构
JVM的堆是运行时数据区 所有对象实例都是在这个堆上面分配内存的 它在JVM运行时被启动,堆上所有对象内存都是由垃圾回收器回收
堆内存是由存活的和死亡的对象组成的,存活的对象是可以被访问的,他们不会被垃圾回收器回收,死亡的对象是不能被访问的 还没有被垃圾回收器回收的对象,在没有被垃圾回收器回收之前他们会一直占用堆内存。
永久代码区:用于存放静态文件:java类、方法等
5.串行收集器和吞吐量收集器的区别
吞吐量收集器是一个并行版本的新生代垃圾收集器 通常用于中型和大型规模的应用程序,串行收集器用于小规模的应用程序。
6.java类的初始化顺序
1.静态代码块、普通代码块、构造函数