JDK自带的序列化效率很低,速度慢且序列化后的字节数组占空间大。通常推荐使用第三方的序列化工具,比如Protostuff库,它是基于Google的Protobuf实现的序列化方法。原生的Protobuffer使用起来相当麻烦,首先要写.proto文件,然后编译.proto文件,生成对应的.java文件。Protostuff在几乎不损耗性能的情况下做到了不需要再写.proto文件来实现序列化。
使用Protostuff库需要引入的Maven依赖:
1 | <dependency> |
代码示例:
1 | package com.lzumetal.serialize.protostuff; |
构建schema的过程可能会比较耗时,因此希望使用过的类对应的schema能被缓存起来。代码如下:
1 | private static Map<Class<?>, Schema<?>> cachedSchema = new ConcurrentHashMap<>(); |
v1.5.2