Resource size hints appear to be used incorrectly when using compression
Alan Bateman
Alan.Bateman at oracle.com
Thu Aug 9 10:06:46 UTC 2018
On 09/08/2018 10:42, Luke Hutchison wrote:
> Good info, I was wondering about the claims (in the ModuleReader
> javadoc) about how ByteBuffer was being used for high-speed
> classloading, given that in the past rt.jar has been compressed. This
> makes a lot more sense if the system modules are not compressed.
>
> So yes, the issues I raised are about the use of decompressed sizes in
> the loading of resources from runtime images that were created with
> compression.
>
I don't think rt.jar was compressed in JDK 8 or older, at least not
unless you are looking at embedded builds where it helped with the
static footprint (and depending on processor/environment, it may help
with class loading performance too).
The API note (and it's just a note, not normative text) about class
loading in the ModuleReader javadoc was to document the rational for the
read/release methods. The built-in class loaders make heavy use of it
when loading classes/resources from modules in the run-time image and
significant work was done to ensure that the buffers are views on the
underlying memory mapped file.
The support for compressing resources in the jimage is something that
does need attention so I created JDK-8209176 to track that. As I said,
we haven't done as much performance testing with compression enabled.
I'll also add that your comments about malicious values need to be
viewed in the context of the tool that creates the run-time image -
there is no support whatsoever for using jimage files that have not been
created by the jlink tool.
-Alan
More information about the jigsaw-dev
mailing list