Hello, from the JVM default of allocating 4.5GB of RAM on a 8GB RAM machine I was able to get down to ~0.9-1GB of memory consumption for a quite simple app. I was expecting more like 100-200MB (extra to heap and metaspace). Are there any recommendations for this?
That already includes reducing heap very much and reducing metaspace a lot. It appears that java takes ~700MB from those ~900MB.
-XX:InitialHeapSize=50m
-XX:MaxHeapSize=150m
-XX:MaxHeapFreeRatio=10
-XX:MinHeapFreeRatio=5
-XX:MaxMetaspaceSize=50m
-XX:-TieredCompilation
-XX:NativeMemoryTracking=summary
-jar app.jar
It is a Fedora 36 Linux box
Is there a better experience with Eclipse Temurin JDK, or IBM Semeru/OpenJ9?
I had almost no improvement with jlink
Native images?
Have you profiled the app, any clear indication on what’s using that much memory?
Hello, I am not unhappy with the heap and metaspace consumption, what worries me that jvm reserves 900 MB in total
VmPeak: 986900 kB
VmSize: 986900 kB
Resident memory is much lower
VmHWM: 135744 kB
VmRSS: 131660 kB
Do you think profiling would help?
Well I see it is not a Hilla problem, I am just curious if you have a solution for that. Even a simple do nothing System.in.read() Java app reserves that much RAM…
Java loves RAM
you can find more information about tuning here https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/tune_footprint.html
True, I just do not see how discontinued jrockit vm docs are relevant to this. I ofc have looked into oracle jvm parameters, still stuck around 700mb + 200mb heap and meta.
So with a simple app
public class MemTest {
public static void main(String args) throws java.lang.Exception {
System.in.read();
}
}
With -Xms50m -Xmx150m -XX:MaxMetaspaceSize=50m I got to 1.153 GB reserved RAM
Using switches and jlink custom jdk it went down to 0.825 GB
Seems that Java is unsuitable for small apps in general