java序列化使用Kryo中遇到的问题总结

问题1:

  1. 在使用Kryo进行序列化的时,反序列化过程中,Bufferflow
  2. com.esotericsoftware.kryo.KryoException: Buffer underflow.
  3. 问题原因:
  4. 当进行读取数据时,读到最后时,没有读到数据,继续读取的时候,发生的错误
  5. 当我没有正确关闭输出/输入类型时,这发生在我身上。你需要确保Kryo冲洗除了 output.flush()或 output.close()。
  6. 其次,查看 kryo.writeClassAndObject()。然后,您可以执行 kryo.readClassAndObject()并将对象转换为它应该的类型。
  7. 原因是客户端和服务器端的kryo必须register同样的class类,某一端多register一个class类导致的
  8. 注意:你每次只读取一个字节,那就判断大于0就好了,如果不是一个记得修改条件哦!
  9. 总结
  10. ByteBuffer.remaining() 小于要读取或写入的长度时,再执行读取或写入操作都会产生异常;
  11. 读取则产生 java.nio.BufferUnderflowException 异常,
  12. 写入则产生 java.nio.BufferOverflowException 异常。
  13. ByteBuffer.remaining() 等于 0 时,不能再执行读取或写入操作,需要执行:clear() 操作,否则将产生异常。

解决方案:

  1. 在进行反序列化过程中,判断读取是否为0,如果是0,直接退出