Logo
View on GitHub

Agrona

Agrona provides a library of data structures and utility methods that are a common need when building high-performance applications in Java. The sort of things you can find in Agrona are:

  • Buffers - Thread safe direct and atomic for working with on and off heap memory with memory ordering semantics.
  • Lists - Array backed lists of int/long primitives to avoid boxing.
  • Maps - Open addressing and linear probing with int/long primitive keys to object reference values.
  • Maps - Open addressing and linear probing with int/long primitive keys to int/long values.
  • Sets - Open addressing and linear probing for int/long primitives and object reference values.
  • Cache - Set Associative with int/long primitive keys to object reference values.
  • Queues - Lock-less implementations for low-latency applications.
  • Ring/Broadcast Buffers - implemented off-heap for IPC communication.
  • Basic Agent framework.
  • Signal handling to support "Ctrl + c" in a server application.
  • Scalable Timer Wheel.
  • Basic code generation from annotated implementations that can vary on primitive types.
  • Off-heap counters implementation for application telemetry.
  • Implementations of InputStream and OutputStream that can wrap direct buffers.
  • DistinctErrorLog: A log of distinct errors to avoid filling disks with existing logging approaches.