RFR: JDK-8222373 Improve CDS performance for custom class loaders

Jiangli Zhou jianglizhou at google.com
Thu Jun 20 15:08:04 UTC 2019


Hi Yumin,

Moving away from re-reading class byte stream and re-computing CRC at
runtime is definitely in the right direction. That will make CDS user
defined class loader support become beneficial.

To make the user defined class loader support usable, the following
two areas need to be redesigned:

1) Class Loader API, I see Alan also brought that up in his reply
    A new archive-aware class loader should be introduced to assist
CDS. That will help design a cleaner set of APIs. It will also make
CDS implementation cleaner in this area.

2) Dumping process
    This is for both the static dumping process and dynamic dumping
process. For the static dumping process, a complete new design is
needed in order to make the support adoptable.

Best regards,

Jiangli

On Wed, Jun 19, 2019 at 6:37 PM yumin qi <yumin.qi at gmail.com> wrote:
>
> Hi, Please review:
> bug: https://bugs.openjdk.java.net/browse/JDK-8222373
> webrev: http://cr.openjdk.java.net/~minqi/8222373/01/
>
> To load shared class from CDS, first class file stream is read from jar
> file, then load the class with the stream. In vm, the stream is used to
> calculate file size and crc32 which are used to compare with the counter
> parts stored in CDS.
>
> In fact, when CDS mapped, every SharedClassPathEntry is checked for
> validation, if there is mismatch JVM will exit. That is, if user updated
> jars and did not recreated CDS archive, it would fail. This can make us
> load the class from CDS directly (if it is in CDS) without checking class
> file length and crc32, so skip getting byte stream from source to save time.
>
> Tests: submit passed
> local on linux-x86_64: jtreg/runtime
>
>
> Thanks
> Yumin


More information about the hotspot-runtime-dev mailing list