Modular LIBJVM.SO library for Docker
Tibor Digana
tibordigana at apache.org
Mon May 24 20:29:05 UTC 2021
Hi Stefan,
.. but I am a user and I like downloading the Openjdk images from docker
hub, not compiling them.
It is not a realistic solution to recompile the sources.
We are looking for a way to minimize the memory footprint in Docker and so
this LIBJVM was found too big.
So the solution would be as follows.
The community may pick up a Docker-friendly GC algorithm (my proposal is
ZGC) and VM settings for Linux, build a second library, i.e. libjvm2.so for
such type of virtualization. And, in the next step the JLINK should add a
new option which would delete libjvm.so and rename the libjvm2.so which
finally enables ZGC by default especially in the virtualization.
I would rather expect this. It would be cool marketing for Java because
Java footprint would be really minimalistic for small embedded devices, and
extremely small Docker images.
Cheers
Tibor
On Mon, May 24, 2021 at 9:54 PM Stefan Karlsson <stefan.karlsson at oracle.com>
wrote:
> Hi Tibor,
>
> On 2021-05-24 21:26, Tibor Digana wrote:
> > Hi,
> >
> > The size of the library "libjvm.so"o is bigger than Java modules, and
> > bigger or comparable with the size of the application in the Docker
> image.
> >
> > After processing the JDK by the JLINK and shrinking the native library "
> > libjvm.so" my JRE is 35MB big in Docker image but the "libjvm.so" is too
> > big, i.e. 18MB (from the original size 22MB) and the modules have only
> 12MB.
> >
> > We have many GC algorithms in the JVM and maybe this is the reason why
> the
> > library is bigger than the Java modules and then JLINK does not become
> much
> > effective.
> >
> > Can you please develop a modular JVM library so that I would be able to
> > select only one algorithm of GC which means that the modules with other
> GC
> > algorithms would not appear in my Docker image?
>
> FWIW, we don't have a modular JVM, but we have support to remove GCs
> from the compilation of libjvm.so. All combinations are not always
> maintained, so you might have to propose patches to fix some of the
> issues you find.
>
> If you run:
> bash configure --help
>
> you'll get a list of --enable-jvm-feature-X for the features you can
> compile into the JVM. Use corresponding --disable- flag to remove the
> feature. For example: --disable-jvm-feature-g1gc removes G1 from the
> libjvm.so.
>
> HTH,
> StefanK
>
> >
> > Thx
> > Tibor
>
>
More information about the hotspot-dev
mailing list