当在具有更大ram的机器上运行时,java将使用更多内存

Erb*_* Mo 4 java memory garbage-collection memory-management out-of-memory

如果我有一个较小的ram机器和一个较大的ram机器.我在它们上运行相同的java代码.jvm会在更大的ram机器上更懒惰地进行垃圾收集吗?

我试图解决的问题是内存不足问题.人们报告他们在小型ram机器上有内存不足的问题.我想测试一下,但我现在唯一拥有的机器比他们的机器大得多.我想知道我是否在这个更大的ram机器上进行测试并跟踪内存使用情况,在小型ram机器上内存使用量是否相同,或者它将使用更少的内存?

谢谢!厄尔本

Sal*_*lah 6

您需要查看JVM内存参数.实际上,您可以根据需要为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
Run Code Online (Sandbox Code Playgroud)

因此,在您的情况下,您可以设置与另一台机器中相同的内存.所以你的机器不会占用比Xmx值更多的RAM

并且您可能还想检查此参数.

-XX:MaxNewSize=  -> this need to be 40% from your Xmx value
-XX:NewSize=614m -> this need to be 40% from your Xmx value
Run Code Online (Sandbox Code Playgroud)

你也可以告诉你JVM使用什么类型的GC:

-XX:+UseConcMarkSweepGC
Run Code Online (Sandbox Code Playgroud)

因此,如果您在两台计算机中设置此参数,您将获得相同的结果和最可能的GC活动.

  • 我仔细看了一下。您的回答可能会解决 OP 的问题,但它并没有回答 OP 提出的这个问题:`在内存较大的机器上,jvm 会更懒惰地进行垃圾收集吗?` 就我个人而言,我对自己很好奇 :) (2认同)