Chronicle Bytes contains all the low level memory access wrappers. It is built on Chronicle Core’s direct memory and OS system call access.
Chronicle Bytes has a similar purpose to Java NIO’s ByteBuffer with some extensions.
The API supports.
-
64-bit sizes
-
UTF-8 and ISO-8859-1 encoded strings.
-
thread safe off heap memory operations.
-
deterministic release of resources via reference counting.
-
compressed data types such as stop bit encoding.
-
elastic ByteBuffer wrappers which resize as required.
-
parsing text and writing text directly to off heap bytes.
Access | ByteBuffer | Netty IOBuffer | Aeron UnsafeBuffer | Chronicle Bytes |
---|---|---|---|---|
Read/write primitives in native memory |
yes |
yes |
yes |
yes |
Separate Mutable interfaces |
run time check |
run time check |
yes |
yes |
Read/Write UTF8 strings |
no |
no |
String |
any CharSequence + Appendable |
Read/Write ISO-8859-1 strings |
no |
no |
? |
any CharSequence + Appendable |
Support Endianness |
Big and Little |
Big and Little |
Big and Little |
Native only |
Size of buffer |
31-bit |
31-bit |
31-bit |
63-bit |
Elastic ByteBuffers |
no |
yes |
no |
yes |
Disable bounds checks |
no |
no |
set globally |
by buffer |
Wrap an address |
no |
no |
yes |
yes |
Thread safe read/write, CAS and atomic add operations |
no |
no |
int; long |
int; long; float and double |
Streaming access |
yes |
yes |
no |
yes |
Deterministic release of memory |
Internal API |
Internal API |
Caller’s responsibility |
yes |
Separate read and write position |
no |
yes |
na |
yes |