Java序列化 资源销毁

2022-10-01 23:21:00
admin
原创 775
摘要:Java序列化 资源销毁

一、Java序列化

Serializable序列化:

1、serialVersionUID标识类的版本,序列化时写入文件,反序列化时读取进行检查;

2、serialVersionUID默认使用包名、类名、方法名、字段名、修饰符根据规则生成;

3、建议显示指定serialVersionUID,因为默认serialVersionUID可能有兼容性问题;

4、Serializable实现类要求所有字段都能够序列化,除非字段标识为transient;

5、Serializable实现类的父类如果不标识序列化,则父类成员不会参与序列化;

6、反序列化通过反射实现,序列化类构造函数不会被调用,不序列化的父类构造函数会被调用;

7、private void writeObject(ObjectOutputStream out)序列化重载函数,按需进行重载;

8、private void readObject(ObjectInputStream in),反序列化重载函数,按需进行重载

9、private Object readResolve(),生成对象重载函数,readObject之后调用,按需进行重载


Externalizable序列化:

1、Externalizable需要调用序列化类无参构造函数生成对象;

2、void writeExternal(ObjectOutput out),用于序列化成员变量,必须实现;

3、void readExternal(ObjectInput in),用于反序列化成员变量,必须实现;

4、private Object readResolve(),Serializable保持一致;


二、Java资源销毁

1、finalize是Object的方法,用于进行资源释放,子类需要重写该方法,对象被回收时会被虚拟机调用;

2、System.gc建议虚拟机进行垃圾回收,System.runFinalization建议虚拟机调用finalize方法;

3、runFinalization实际依赖gc,所以感觉runFinalization没啥用处;

发表评论
评论通过审核之后才会显示。