2

Chronicle Map を使用しようとすると、解決できなかった多くのエラーが発生します。最近のデバッグの試みでは、ストリームをメモリに読み込んでバイトが何であるかを確認しましたが、JVM 全体がクラッシュしました。

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000005079c1b0, pid=7128, tid=10476

私は Kryo を使用してデータを書き込み、BytesMarshaller<T>次のような for each タイプを使用して読み戻しています。

public void write(Bytes bytes, T obj)
{
    ByteArrayOutputStream baos = null;
    try (ByteArrayOutputStream baos2 = new ByteArrayOutputStream())
    {
        try (Output output = new Output(baos2))
        {
            kryos.get().writeObject(output, obj);
            baos = baos2;
        }
    }
    byte[] byteArray = baos.toByteArray();
    OutputStream out = bytes.outputStream();
    {
        out.write(byteArray);
    }
}

書くとこれを読む:

public T read(Bytes bytes)
{
    ByteArrayOutputStream baos = null;
    try (ByteArrayOutputStream baos2 = new ByteArrayOutputStream())
    {
        InputStream in = bytes.inputStream();
        {
            ByteStreams.copy(in, baos2);
            baos = baos2;
        }
    }
    try (Input input = new Input(baos.toByteArray()))
    {
        return kryos.get().readObject(input, cls);
    }
}

ストリームを閉じようとしましたが、まったく同じ問題が発生します。

この問題は、キー セットを繰り返し処理し始めたときに発生します。関連性があるかどうかはわかりません。

これは私のスタックトレースです:

j  com.google.common.io.ByteStreams.copy(Ljava/io/InputStream;Ljava/io/OutputStream;)J+28
j  uk.org.jaggard.dao.memory.KryoBytesMarchaller.read(Lnet/openhft/lang/io/Bytes;)Ljava/lang/Object;+28
j  net.openhft.chronicle.hash.serialization.internal.BytesReaders$SimpleBytesReader.read(Lnet/openhft/lang/io/Bytes;J)Ljava/lang/Object;+5
j  net.openhft.chronicle.map.VanillaChronicleMap$Segment.getEntry(Lnet/openhft/chronicle/map/VanillaChronicleMap$SegmentState;J)Ljava/util/Map$Entry;+70
j  net.openhft.chronicle.map.VanillaChronicleMap$EntryIterator.next()Ljava/util/Map$Entry;+115
j  net.openhft.chronicle.map.VanillaChronicleMap$EntryIterator.next()Ljava/lang/Object;+1
j  java.util.AbstractMap$1$1.next()Ljava/lang/Object;+4
4

0 に答える 0