Object类学习

getClasss方法返回的类对象是static synchronized方法锁定

clone方法跑出CloneNotSupportedException

x.clone() != x

x.clone().getClass() == x.getClass()

x.clone.equals(x)

数组默认实现Cloneable接口,当clone返回的数组内部为空

notify唤醒线程,与其他线程竞争

wait使线程休眠,唤醒有4种方式:

1、其他线程调用notify,恰好被唤醒。

2、其他线程调用notifyAll

3、其他线程interrupt线程

4、wait时间已到

finalize() throws Throwable

当垃圾收集确定不再有该对象的引用,垃圾收集器在对象上调用该对象。

finalize是Object的方法,子类可以覆盖这个方法来做一些系统资源的释放或数据的清理。

可以在finalize()让这个对象再次被引用 ,避免被GC回收;最常用的目的是做cleanup

不保证这个finalize()一定被执行,当保证调用finalize线程没有持有任何user-visible同步锁

在finalize里面抛出异常会被忽略,同时方法终止。

finalize被调用后,JVM会再一次检测这个对象是否被存活线程访问,不是就清除。finalize只能被调用一次,覆盖了finalize方法对象须两个GC周期才被清除

上一篇:javascript – MobX – 当我将数据注入React组件时可以使用`inject`时,我为什么要使用`observer`


下一篇:System.gc()与Object.finalize()的区别