RFR: 8341597: ZipFileInflaterInputStream input buffer size uses uncompressed size

Eirik Bjørsnøs eirbjo at openjdk.org
Mon Oct 7 07:40:35 UTC 2024


On Mon, 7 Oct 2024 01:52:59 GMT, David Schlosnagle <duke at openjdk.org> wrote:

>> src/java.base/share/classes/java/util/zip/ZipFile.java line 417:
>> 
>>> 415:                     if (size > 65536) {
>>> 416:                         size = 8192;
>>> 417:                     }
>> 
>> Not sure if this clamping makes sense? We clamp the size at 8192, but only when size is larger than 65536?
>> 
>> Wondering if we should simply clamp to 8192 instead:
>> 
>> 
>> Suggestion:
>> 
>>                    int size = Math.clamp(CENSIZ(zsrc.cen, pos), 2, 8192);
>
> I'm curious if it would be beneficial to increase the max clamp size to 16384 bytes similar to https://bugs.openjdk.org/browse/JDK-8299336 / https://github.com/openjdk/jdk/pull/11783
> 
> Suggestion:
> 
>                     int size = Math.clamp(CENSIZ(zsrc.can, pos), 2, 16384);

Yes, there may be benefits in increasing this max buffer size for larger entries, but I think that requires a more extensive analysis and discussion than what want to do in this PR.

99 percent of classes in guava.jar have a compressed size less than ~6700 bytes. The average compressed size is ~1300 bytes.

So this does not seem to matter for class loading, which is probably what ZipFile is most optimized for.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/21379#discussion_r1789692897


More information about the core-libs-dev mailing list