Object 中的方法:
finalize()//清除资源
hashcode()//获取hashcode Java hashcode 理解:
1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;
2、如果两个对象相同,就是适用于equals(Java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;
3、如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;
4、两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。
toString();
notify()//唤醒对该对象监视的线程,该方法和wait()正好相反互补,wait和notify方法在线程同步上使用,防止数据污染,数据同步等。
wait()//暂时挂起调用该对象的线程
getClass()//获取对象的类名
clone()//复制和该对象一样的对象
equal//判断两个对象是不是相等
jvm 回收的理解:
ava 有个解释器的含义:就是负责对象的创建,内存分配,记录和回收。
Java对象的创建就是在堆上面分配一块地址区域,同时在栈上面创建一个栈结构。在创建栈结构的同时,会记录对象的对应的地址区域,栈是有自己的生命周期的,创建栈是生命的开始,栈弹出就是生命周期的结束。当然栈自己的大小也决定自己的生命周期,主应用的对应一个最大的栈结构。是面对对象编程,那么先是创建对象,也就是创建一个总的栈结构,然后运行对象的方法--这就代表这主线程。是面对结构编程,那么也是需要创建main方法,那么也是要建栈。
从系统而言,cp开始执行是依据栈结构的,其是指向栈结构中的指令一步步执行的。
当这个对象调用完成之后,那么栈结构就完全弹出,那么就会被记录到。栈是一直被跟踪和记录的。
GC创建单向表记录对象的状态,弹出栈的时候就会回收堆地址,所谓的回收堆地址,就是在记录堆的内存分配的记录表中清除这块记录。
Java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。
(1).对象不一定会被回收。
(2).垃圾回收不是析构函数。
(3).垃圾回收只与内存有关。
(4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的。