An FloatArrayAllocator is an object which manages float array objects
of a certain size. These float arrays are needed temporarily during
faceted search (see FacetsAccumulator and can be reused across searches
instead of being allocated afresh on every search.

An FloatArrayAllocator is thread-safe.

WARNING: This API is experimental and might change in incompatible ways in the next release.

Constructor Detail

FloatArrayAllocator

public FloatArrayAllocator(int size,
int maxArrays)

Construct an allocator for float arrays of size size,
keeping around a pool of up to maxArrays old arrays.

Note that the pool size only restricts the number of arrays that hang
around when not needed, but not the maximum number of arrays
that are allocated when actually is use: If a number of concurrent
threads ask for an allocation, all of them will get a counter array,
even if their number is greater than maxArrays. If an application wants
to limit the number of concurrent threads making allocations, it needs
to do so on its own - for example by blocking new threads until the
existing ones have finished.

In particular, when maxArrays=0, this object behaves as a trivial
allocator, always allocating a new array and never reusing an old one.