I would imagine the sticky buffers are there to prevent creating millions of more objects. You can either have a low memory footprint and spend a lot of time creating and collecting buffer garbage or a fast application.
On Thu, Apr 4, 2019 at 7:24 AM Jörg Michelberger (JIRA) <[email protected]> wrote: > > [ > https://issues.apache.org/jira/browse/DIRMINA-1103?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel > ] > > Jörg Michelberger updated DIRMINA-1103: > --------------------------------------- > Description: > For each Zlib instance there is a zStream instance which is equipped with > new buffers for each in and out of inflate / deflate. This buffers are not > released after each inflate / deflate. So the last compressed and > uncompressed byte[] and its content for rx and tx is not garbage > collectable on each session. > > It would be great if there was a reset(zStream) method on Zlib which sets > the in and out to static empty byte[] to release these buffers after usage > quite before returning from Zlib.deflate and Zlib.inflate but in the > synchronized block. Something like: > > {{private void resetZStream (zStream) {}} > > {{ zStream.next_in = EMPTY_BYTE_ARRAY;}} > {{ zStream.next_in_index = 0;}} > {{ zStream.avail_in = 0;}} > {{ zStream.next_out = EMPTY_BYTE_ARRAY;}} > {{ zStream.next_out_index = 0;}} > {{ zStream.avail_out = 0;}} > > {{}}} > > > > was: > For each Zlib instance there is a zStream instance which is equipped with > new buffers for each in and out of inflate / deflate. This buffers are not > released after each inflate / deflate. So the last compressed and > uncompressed byte[] and its content for rx and tx is not garbage > collectable on each session. > > It would be great if there was a reset(zStream) method on Zlib which sets > the in and out to static empty byte[] to release these buffers after usage > quite before returning from Zlib.deflate and Zlib.inflate. Something like: > > {{void reset (zStream) {}}{{ }} > > {{ zStream.next_in = EMPTY_BYTE_ARRAY;}} > {{ zStream.next_in_index = 0;}} > {{ zStream.avail_in = 0;}} > {{ zStream.next_out = EMPTY_BYTE_ARRAY;}} > {{ zStream.next_out_index = 0;}} > {{ zStream.avail_out = 0;}} > > {{}}} > > > > > > Avoid sticky byte array buffers in Zlib CompressionFilter > > --------------------------------------------------------- > > > > Key: DIRMINA-1103 > > URL: https://issues.apache.org/jira/browse/DIRMINA-1103 > > Project: MINA > > Issue Type: Improvement > > Affects Versions: 2.0.21 > > Reporter: Jörg Michelberger > > Priority: Major > > > > For each Zlib instance there is a zStream instance which is equipped > with new buffers for each in and out of inflate / deflate. This buffers are > not released after each inflate / deflate. So the last compressed and > uncompressed byte[] and its content for rx and tx is not garbage > collectable on each session. > > It would be great if there was a reset(zStream) method on Zlib which > sets the in and out to static empty byte[] to release these buffers after > usage quite before returning from Zlib.deflate and Zlib.inflate but in the > synchronized block. Something like: > > {{private void resetZStream (zStream) {}} > > {{ zStream.next_in = EMPTY_BYTE_ARRAY;}} > > {{ zStream.next_in_index = 0;}} > > {{ zStream.avail_in = 0;}} > > {{ zStream.next_out = EMPTY_BYTE_ARRAY;}} > > {{ zStream.next_out_index = 0;}} > > {{ zStream.avail_out = 0;}} > > {{}}} > > > > > > -- > This message was sent by Atlassian JIRA > (v7.6.3#76005) >
