Fat jar with AppCDS
ioi.lam at oracle.com
Mon Apr 30 22:05:58 UTC 2018
Thank you so much for writing the tool. We have written some internal
tools that work similarly. As you said, the current interface is awkward
(because it's experimental). I have some ideas for how to improve
support for custom loaders in CDS, and I'll send out a separate mail for
I have made a small patch your cl4cds tool to support "fat" JAR files.
You can find the patch and a test case from:
It basically extract all entries like
into a local file
and read from this location during archive dumping.
Yumin, could you try it out and see if it works for you?
On 4/24/18 11:14 PM, yumin qi wrote:
> Hi, Volker
> Thanks! I will try your tool.
> On Tue, Apr 24, 2018 at 5:42 PM, Volker Simonis
> <volker.simonis at gmail.com <mailto:volker.simonis at gmail.com>> wrote:
> Hi Yumin,
> your right with your observation. For applications like Tomcat or
> Eclipse you can currently usually only share about 20%-30% of the
> application classes, even with AppCDS.
> To overcome this problem I wrote a small tool called "cl4cds" (i.e.
> class list for CDS) which can be used to generate a classlist out of
> the "Xlog:class+load" output. Unfortunately this is currently an
> extra, off-line step which should obviously be integrated right into
> HotSpot. But for the time being it allows you to take advantage of
> AppCDS for custom classloaders and share a much bigger amount of
> classes even for application server scenarios.
>  https://github.com/simonis/cl4cds
> On Tue, Apr 24, 2018 at 2:49 AM, yumin qi <yumin.qi at gmail.com
> <mailto:yumin.qi at gmail.com>> wrote:
> > Hi,Ioi
> > There are some applications with fat jar, that is, like web
> jars, are
> > loaded by its own class loaders, are not dumped when run with
> current mode.
> > AppCDS can dump the jars in path and loaded by App class loader,
> but it
> > does not dump the classes loaded by the class loader "in the
> jars", which
> > are loaded in runtime.
> > Do you have any plan to work on this issue? The classes loaded
> > runtime are NOT generated classes, they are just designed this
> way and
> > stored in other jar files(fat).
> > We are working on the issue, so if you have recommendation or
> you already
> > worked on it please let me know.
> > Thanks
> > Yumin
More information about the hotspot-runtime-dev