Open
Description
Currently, segment pools exist only on JVM (on other platforms, implementations are effectively no-op) and behave more like caches than pools.
There are a few directions in which we may/should develop segment pools:
- support pools configuration (both in terms of the pool capacity and the size of allocated segments)
- make sure every segment is returned to a pool once there are no users remaining (Track precise number of shared segment copies to return the last one into a segment pool #347)
- support unlinking a segment from a pool (for scenarios when we have a byte-buffer backed segment and now sending it via Netty -> segment is no longer in use once we "consumed" it by wrapping into a ByteBuf, but it could not be released as a Netty owns it now)
- support adding already allocated data into a buffer (related to Missing API: zero-copy wrapping of ByteArray with Source. #166)
- support pools on other platforms
- support pool-level isolation (for instance, if there are multiple threads make sure that each of them uses a separate pool, so that data used in one thread would never leak into another thread)
- support leak tracing (Leak tracing mechanism #144)
This is an epic describing what could be done and tracking progress rather than an instruction to what should be implemented.