Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

will java use more memory when running on machine with larger ram

If I have a smaller-ram machine and a larger-ram machine. I run the same java code on them. Will jvm do garbage collection more lazily on the machine with larger ram?

The problem I am trying to solve is an out of memory issue. People reported that they have Out of memory issue on small ram machine. I want to test that but the only machine I have now has a much larger ram than theirs. I am wondering if I do the test on this larger-ram machine and keep track of the memory usage, will the memory usage be the same on a smaller-ram machine or it will use even less memory?

Thanks! Erben

like image 375
Erben Mo Avatar asked Dec 20 '22 18:12

Erben Mo


2 Answers

You need to take a look at the JVM memory parameters. actually you can set the as much memory as you want to your JVM :

-Xmx2048m -> this param to set the max memory that the JVM can allocate
-Xms1024m -> the init memory that JVM will allocate on the start up
-XX:MaxPermSize=512M -> this for the max Permanent Generation memory

so in your case you can set the much memory as in the another machine. so you machine will not take more RAM than the Xmx value

and you may want to check this parameters also.

-XX:MaxNewSize=  -> this need to be 40% from your Xmx value
-XX:NewSize=614m -> this need to be 40% from your Xmx value

also you may tell you JVM what type of GC to use like :

-XX:+UseConcMarkSweepGC

SO if you set this parameters in the both machines, you will get the same results and the same GC activity most likely.

like image 152
Salah Avatar answered May 01 '23 04:05

Salah


Yes it will. This depends on the default maximum heap size. You can check your current maximum heap size using this command:

java -XshowSettings:vm

On my wife's laptop (Windows 8.1, 4 GB RAM, 32-Bit-Java-Runtime) it is 247.5 MB, while on my laptop (Windows 7, 8 GB RAM, 64-Bit-Java-Runtime) it is 903.12 MB.

This is determined by Java (see https://stackoverflow.com/a/4667635/3236102, though the values shown there are for server-class-machines, they might be different from normal machines).

If you want your vm to simulate a low-RAM-machine just use the -Xmx flag to limit your machine to less RAM (e.g. -Xmx128m for 128 MB RAM allocation).

The best thing might be to ask the users that encounter the Out Of Memory-issues to check their maximum heap size (using the command above) and set your machine to the same maximum heap size, so you have the same conditions as they have.

like image 42
Dakkaron Avatar answered May 01 '23 04:05

Dakkaron