Hi,

Please help review the change for JDK-8189611.

issue: https://bugs.openjdk.java.net/browse/JDK-8189611
webrev: http://cr.openjdk.java.net/~sherman/8189611/webrev


Notes:

(1) To add three public methods to help iterating/streaming the versioned entries
for multi-release jar file support (CSR is to be filed)

JavaFile.versionedStream()
JavaFile.getRealName()
ZipFile.entryNameStream()
-- a convenient method for use scenario that only the entry name is interested.

(2) To update jdk code( jlink, module, loader, where currently the internal/private
methods are used) to use the new public methods for "versionedStream()" and
"getRealName()" need. (jdeps is not being updated for now as it is now compiled
by boot jdk).

(3) To cleanup the way how the JarFileEntry and its corresponding versioned one are searched and created. By pushing the JarFileEntry constructor into ZipFile via SharedSecrets, we are now using much less memory (almost half) for JarFileEntry creation and have a slightly faster iteration (around 10% by jmh simple benchmark).

(4) To add a fast-path in ZipCoder for UTF8 charset+ascii-only entry name. To take the advantage of the compact String to remove the unnecessary char[] usage.
This is related to JDK-8184947: ZipCoder performance improvements

(5) Two snapshots of the JFR recording of the memory usages for simply looping the JarFile.stream() on old rt.jar for 60s, before and after the change of (3)/(4)

http://cr.openjdk.java.net/~sherman/8189611/mem_before.png
http://cr.openjdk.java.net/~sherman/8189611/mem_after.png

Thanks,
Sherman


Reply via email to