A Java library of high-performance data structures and utilities for low-latency applications.
Agrona is a Java library that provides high-performance data structures and utility methods for building low-latency applications. It offers efficient alternatives to standard Java collections, buffers, and concurrency utilities, focusing on minimizing overhead and garbage collection. It is widely used in real-time systems like financial trading platforms and messaging transports.
Java developers building high-performance, low-latency applications such as financial trading systems, real-time messaging, or telemetry services. It is particularly valuable for those needing to optimize memory usage and concurrency.
Developers choose Agrona for its zero or low-overhead abstractions, primitive-based collections to avoid boxing, and off-heap memory support, which collectively reduce latency and garbage collection pressure compared to standard Java utilities.
High Performance data structures and utility methods for Java
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides direct and atomic buffers for on/off-heap memory with memory ordering semantics, enabling thread-safe, low-latency data handling as used in Aeron's message transport.
Offers array-backed lists, maps, and sets for int/long primitives to avoid boxing overhead, optimizing memory usage and speed in numeric-heavy applications.
Includes lock-less queues and a timer wheel with O(1) operations, ideal for building high-throughput, concurrent services without synchronization bottlenecks.
Features off-heap counters for application monitoring, reducing garbage collection pressure and improving performance in real-time systems like trading platforms.
Primitive collections are restricted to int and long types, lacking support for other primitives like double or boolean, which can be a limitation in diverse use cases.
Using off-heap buffers requires manual handling to avoid memory leaks and errors, adding complexity and debugging challenges compared to standard heap-based approaches.
Documentation and community support are more limited than mainstream Java libraries, making it harder for newcomers to troubleshoot or find examples beyond core use cases.