一个对象的完整生命周期涉及Java平台的很多相关技术。
1.在创建一个Java类的对象之前,需要先由虚拟机加载该Java类。
2.在Java类被加载之后,还需要对该Java类进行链接和初始化。
3.初始化完成之后,才能创建出该构造方法来完成。
4.当不再有引用指向一个对象时,这个对象成为垃圾回收的候选。
5.对象终止机制提供了一种方式在对象被回收之前进行清理工作。
6.当需要复制一个对象时,可以使用Object类的clone方法。
package java.lang;
public class Object
{
private static native void registerNatives();
public final native Class<?> getClass();
public native int hashCode();
public boolean equals(Object paramObject)
{
return (this == paramObject);
}
protected native Object clone()
throws CloneNotSupportedException;
public String toString()
{
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
public final native void notify();
public final native void notifyAll();
public final native void wait(long paramLong)
throws InterruptedException;
public final void wait(long paramLong, int paramInt)
throws InterruptedException
{
if (paramLong < 0L) {
throw new IllegalArgumentException("timeout value is negative");
}
if ((paramInt < 0) || (paramInt > 999999)) {
throw new IllegalArgumentException("nanosecond timeout value out of range");
}
if ((paramInt >= 500000) || ((paramInt != 0) && (paramLong == 0L))) {
paramLong += 1L;
}
wait(paramLong);
}
public final void wait()
throws InterruptedException
{
wait(0L);
}
protected void finalize()
throws Throwable
{
}
static
{
registerNatives();
}
}
7.如果需要将对象的状态持久化,可以使用对象序列化机制来得到一个方便存储的字节流。
对象序列化用来在虚拟机中的活动对象和字节流之间进行转换。序列化机制通常包括两个过程:第一个是序列化(serialization),把活动对象的内部状态转换成一个字节流;第二个是反序列化(deserialization),从一个字节流中得到可以直接使用的Java对象。这两个过程对应于保存和读取两个不同的操作。
序列化操作可以作为持久化实现的基础。通过序列化得到的字节流可以保存在文件中,也可以作为二进制数据保存在数据库中。序列化的好处是为开发人员省去繁琐的数据转换操作,所有的数据转换都有Java平台完成,并提供相应的扩展方式允许开发人员进行自定义。