I fail to understand the very basic concept of HDR Histogram:
The HDR Histogram maintains a fixed cost in both space and time. A Histogram's memory footprint is constant, with no allocation operations involved in recording data values or in iterating through them. The memory footprint is fixed regardless of the number of data value samples recorded, and depends solely on the dynamic range and precision chosen.
How is that possible? Or does it simply mean that it uses reactive queue and won't create new instances of objects in Heap, while appending the queue and increasing the overall RAM consumption?
Memory footprint being fixed and no allocations during recording simply means that all necessary allocations happened upon instantiation of the object.
Say the HDR Histogram was to track 10'000 values, in the constructor all 10'000 counters would be created.
If you look in the Java source, the counters are array of long
values which gets created in the constructor.