Re: 回复:Need Information for memory sharing with AppCDS

Ioi Lam ioi.lam at oracle.com
Fri Mar 13 18:16:39 UTC 2020


I usually use ps_mem.py

https://github.com/pixelb/ps_mem/blob/master/ps_mem.py

java -cp ... app1 &
java -cp ... app2 &
ps_mem.py | grep java

Thanks
- Ioi



On 3/13/20 12:28 AM, 向伟(识月) wrote:
> Hi Jiangli, Ioi,
>
> Another question about the memory sharing with AppCDS:
> How to evaluate memory savings when multiple processes use the same 
> archiving file?
>
> Thanks,
> Wei Xiang
>
>     ------------------------------------------------------------------
>     发件人:向伟(识月) <shiyue.xw at alibaba-inc.com>
>     发送时间:2020年3月10日(星期二) 10:39
>     收件人:Jiangli Zhou <jianglizhou at google.com>
>     抄 送:hotspot-runtime-dev
>     <hotspot-runtime-dev-bounces at openjdk.java.net>;
>     hotspot-runtime-dev <hotspot-runtime-dev at openjdk.java.net>
>     主 题:回复:Need Information for memory sharing with AppCDS
>
>     Hi Jiangli,
>
>     Thanks a lot for the detailed information. It's clear to me.
>
>     Thanks,
>     Wei Xiang
>     ------------------------------------------------------------------
>     发件人:Jiangli Zhou <jianglizhou at google.com>
>     发送时间:2020年3月10日(星期二) 00:50
>     收件人:向伟(识月) <shiyue.xw at alibaba-inc.com>
>     抄 送:hotspot-runtime-dev
>     <hotspot-runtime-dev-bounces at openjdk.java.net>;
>     hotspot-runtime-dev <hotspot-runtime-dev at openjdk.java.net>
>     主 题:Re: Need Information for memory sharing with AppCDS
>
>     Hi,
>
>     On Sun, Mar 8, 2020 at 11:56 PM 向伟(识月) <shiyue.xw at alibaba-inc.com> wrote:
>     >
>     > Hi Ioi,
>     >
>     > Thanks a lot for your information.
>     > I have the question about the usage in the document:
>     > For common class path prefix:
>     > ---------------------------------------
>     >     Run the Hello and Hi applications with the same shared archive:
>     > java -XX:SharedArchiveFile=common.jsa -cp common.jar:hello.jar:hi.jar Hello
>     > java -XX:SharedArchiveFile=common.jsa -cp common.jar:hello.jar:hi.jar Hi
>     >
>     > If a class with name ABC is both in hello.jar and hi.jar, the content is different.
>     > With the class path -cp common.jar:hello.jar:hi.jar, the second run "java .. Hi" can't load the correct class ABC in hi.jar.
>     >
>
>     For the above usage, I'd recommend to only archive the classes from
>     common.jar to create a common.jsa. The common.jsa can be used for both
>     applications for sharing. As described in the earlier email, the
>     follow two conditions must be true to achieve sharing:
>
>     - Both processes must be running with the same JVM binary
>     - Both processes must be memory mapping using the same copy of common.jsa.
>
>     If each container uses a different copy of the common.jsa, then there
>     is no memory sharing.
>
>     > Is there any solution for this usage?
>
>     I'd recommend to not include ABC in the common.jsa in this case.
>
>     Hope that helps.
>
>     Best,
>     Jiangli
>     >
>     > Thanks,
>     > Wei Xiang
>     > ------------------------------------------------------------------
>     > 发件人:Ioi Lam <ioi.lam at oracle.com>
>     > 发送时间:2020年3月9日(星期一) 13:03
>     > 收件人:hotspot-runtime-dev <hotspot-runtime-dev at openjdk.java.net>
>     > 主 题:Re: Need Information for memory sharing with AppCDS
>     >
>     > On 3/8/20 8:51 PM, 向伟(识月) wrote:
>     > > Hi,
>     > >
>     > > We am trying to take advantage of the characteristics of memory sharing with AppCDS, and we expected that the
>     > > JVM internal packages and common packages can be shared with AppCDS.
>     > >
>     > > In the user scenario, there are some common base packages for different Java processes with "-cp common_path"
>     > > Process A: -cp common_path:pathA
>     > > Process B: -cp common_path:pathA:pathB
>     > > Process C: -cp common_path:pathC
>     > >
>     > > I check the code in JDK11, and it uses SharedPathsMiscInfo to do the consistency check for class path.
>     > > The below usage can work in JDK11
>     > > Dump stage:
>     > > -cp common_path
>     > >
>     > > Runtime stage:
>     > > -cp  common_path:new_path
>     > >
>     > > But I find that SharedPathsMiscInfo has been removed in the latest JDK code.
>     > >
>     > > I need the information:
>     > > 1. the new flow to do the consistency check.
>     > > 2. constraint condition about the memory sharing among the different Java processes.
>     > >
>     > > Is there any user guide to use the memory sharing feature for AppCDS?
>     >
>     > Hi Wei,
>     >
>     > The topic of sharing the same CDS archive between different apps that
>     > have the same classpath prefix can be found here:
>     >
>     >
>     https://docs.oracle.com/en/java/javase/13/docs/specs/man/java.html#application-class-data-sharing
>     >
>     > See the section "Sharing a Shared Archive Across Multiple Application
>     > Processes".
>     >
>     > SharedPathsMiscInfo was removed in this RFE in JDK 14:
>     > https://bugs.openjdk.java.net/browse/JDK-8227370
>     >
>     > However, we still enforce the same set of consistency checks as previous
>     > JDK versions.
>     >
>     > Please let me know if you have further questions.
>     >
>     > Thanks
>     > - Ioi
>     >
>     > > Thanks,
>     > > Wei Xiang
>     >
>
>



More information about the hotspot-runtime-dev mailing list