Fat jar with AppCDS
yumin qi
yumin.qi at gmail.com
Tue May 1 17:18:54 UTC 2018
Hi, Ioi
I tried your cl4cds.java and it works! Thanks.
One way to work this around may be supply a jcmd operation to dump .jsa
file? When the application started, usually the server will run for long
time.
Yumin
On Mon, Apr 30, 2018 at 10:48 PM, yumin qi <yumin.qi at gmail.com> wrote:
> I will try your patch and update you --- thanks!
>
> Yumin
>
> On Mon, Apr 30, 2018 at 3:05 PM, Ioi Lam <ioi.lam at oracle.com> wrote:
>
>> Hi Volker,
>>
>> 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 discussion.
>>
>> I have made a small patch your cl4cds tool to support "fat" JAR files.
>> You can find the patch and a test case from:
>>
>> http://cr.openjdk.java.net/~iklam/jdk11/fatjarcds/
>>
>> It basically extract all entries like
>>
>> jar:file:/jdk/tmp/test-1.0-SNAPSHOT.jar!/BOOT-INF/lib/valida
>> tion-api-2.0.1.Final.jar!/
>>
>> into a local file
>>
>> ./tmp/BOOT-INF/lib/validation-api-2.0.1.Final.jar
>>
>> and read from this location during archive dumping.
>>
>>
>> Yumin, could you try it out and see if it works for you?
>>
>> Thanks
>> - Ioi
>>
>>
>>
>> On 4/24/18 11:14 PM, yumin qi wrote:
>>
>> Hi, Volker
>>
>> Thanks! I will try your tool.
>>
>> Yumin
>>
>> On Tue, Apr 24, 2018 at 5:42 PM, Volker Simonis <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.
>>>
>>> Regards,
>>> Volker
>>>
>>> [1] https://github.com/simonis/cl4cds
>>>
>>> On Tue, Apr 24, 2018 at 2:49 AM, yumin qi <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 during
>>> > 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
mailing list