2017-11-17 8 views
0

크로니클 바이트 버전 1.7.22를 사용하고 있습니다. off-heap 캐싱과 대용량 미디어 (예 : 이미지, 비디오)의 지속성을 위해 Bytes를 사용하고 싶습니다. 다음과 같이 현재 나는 바이트를 만드는 오전 :크로니클 바이트 여러 번 읽고 동시에 스트림으로

Bytes.elasticByteBuffer(); 

또는

MappedBytes.mappedBytes(file, 64); 

(지속성) 나는 미디어 콘텐츠를 작성하는 Bytes.outputStream()를 사용 Bytes.inputStream을 사용했다() 읽기 미디어 내용. 그러나, 나는 한 번만 InputStream을 읽을 수 있습니다. 재설정을 지원하지 않는 것 같습니다. 여분의 메모리를 할당하지 않고 동시에 여러 번 미디어 컨텐츠를 읽을 수 있습니까?

답변

0

저는 최신 1.9.x 버전으로 업그레이드 할 것을 제안합니다. 그렇기 때문에 많은 버그를 수정할 것이므로 문제가 해결되지는 않을 것입니다.

바이트는 단일 스레드로되어 있지만주의해서 기본 바이트를 공유 할 수 있습니다. 공유 데이터가있는 BytesStore를 만들어서 Bytes (예 : NativeBytes)로 감싸서 해당 데이터에 대한 스레드 로컬 포인터를 가질 수 있도록해야합니다.

데이터의 길이를 공유해야하는 경우 스레드 안전 작업을 사용하여 기본 바이트에 저장해야합니다.

+0

Bytes.bytesForRead(). inputStream()을 단일 스레드에서 여러 번 호출하면 기본적으로 작동해야합니까? – Martin

+0

새로운 NativeBytes (Bytes) .inputStream()에서 "NativeBytes (BytesStore) 생성자가 표시되지 않습니다."라는 결과가 발생합니다. 어떻게 포장 할 수 있습니까? – Martin

+0

이것은 기본적인 작업을 수행하는 것 같습니다 : 새로운 StreamingInputStream (새로운 VanillaBytes (Bytes)). 그러나, 나는 몇 가지 문제로 실행 : 치명적인 오류가 자바 런타임 환경에 의해 감지 된 # : PC = 0x00007f26c68c6474, PID = 14796, TID = 0x00007f26bee6a700 # #의 JRE 버전에 # #의 SIGSEGV (0xB로) : OpenJDK 런타임 환경 (8.0_111-b14) (빌드 1.8.0_111-8u111-b14-2 ~ bpo8 + 1-b14) # Java VM : OpenJDK 64 비트 서버 VM (25.111-b14 혼합 모드 linux-amd64 압축 oops) # 문제가있는 프레임 : # J 9430 C2 net.openhft.chronicle.bytes.MappedBytesStore.readByte (J) B (212 바이트) – Martin