を読んでアンダーフロー例外をバッファ原因:Kryoは、私はシリアル化しています
private byte[] serialize()
{
KryoPool pool = new KryoPool.Builder(factory).softReferences().build();
Kryo kryo = pool.borrow();
Output output = new Output(0, 1024);
kryo.writeClassAndObject(output, readsSetNode);
byte[] bytes = output.toBytes();
output.close();
pool.release(kryo);
return bytes;
}
とデシリアライズ:
KryoPool pool = new KryoPool.Builder(factory).softReferences().build();
Kryo kryo = pool.borrow();
Input input = new Input(bytes);
HashMap<NodeStorage, NodeStorage> deserialized = (HashMap<NodeStorage, NodeStorage>) kryo.readClassAndObject(input);
input.close();
pool.release(kryo);
ハッシュマップオブジェクトを正しく含む「非直列化」が、残念ながら、ログをバッファにスパムされますアンダーフロー例外: これは、アプリケーションをデバッグしようとすると発生します。 これは何らかの問題を引き起こすのか、その動作は正常ですか?
com.esotericsoftware.kryo.Kryo.KryoException:バッファアンダーフロー。 com.esotericsoftware.kryo.io.Input.require(Input.java:199) com.esotericsoftware.kryo.io.Input.readVarInt(Input.java:373) com.esotericsoftware.kryo.util。デフォルトClassClassResolver.readClass(DefaultClassResolver.java:127) at com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:693) at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:804) at main。 (ServiceReplica。)。 java:214) at bftsmart.tom.core.DeliveryThread.deliverUnordered(DeliveryThread.java:289)bftsmart.communication.client.netty.NettyClientServerCommunicationSystemServerSideでbftsmart.communication.client.netty.NettyClientServerCommunicationSystemServerSide.channelRead0(NettyClientServerCommunicationSystemServerSide.java:184) でbftsmart.tom.core.TOMLayer.requestReceived(TOMLayer.java:290) で。 channelRead0(NettyClientServerCommunicationSystemServerSide.java:61)io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)で io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)で io.nettyで 。 .ioChannelRead(ByteToMessageDecoder.java:277)のchannelChildRead(AbstractChannelHandlerContext.java:278) channel.AbstractChannelHandlerContext.fireChannelRead。 io.netty.channel.AbstractChannelHandlerContext.fireChannelReadでio.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292) でio.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:264) (AT io.netty.channel.nio.AbstractNioByteChannel $ NioByteUnsafe.read(AbstractNioByteChannel.java:131)10時 でio.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:962) でAbstractChannelHandlerContext.java:278) 。 io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:528) NioEventLoop.jav a:399) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:371) at io.netty.util.concurrent.SingleThreadEventExecutor $ 2.run(SingleThreadEventExecutor.java:112) at io.netty .util.concurrent.DefaultThreadFactory $ DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(スレッド。Javaの:745)
、これはそれをですが、私はあなたの出力を構築しようとしたい場合はわかりません ' ByteArrayOutputStream'メソッドを呼び出します。 – Max