Description
Currently when a ProxyAllocator (Thread Local) has more than a
configurable number of elements it will return them one-by-one to a
ClassAllocator (Global Freelist). Returning every item in this fashion is
inefficient as we'll likely need more items in the future. Therefore we
should maintain a low watermark (a minimum number) of items that should be in a ProxyAllocator at any one time. When the number of elements reaches high watermark, the free up is triggers to keep it below the low
watermark. Additionally, the free should be a block free instead of
one-by-one as we can reduce several hundred compare-and-swap operations to a single CAS