首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用更大ram的机器上运行时,java会使用更多的内存吗?

在使用更大ram的机器上运行时,java会使用更多的内存吗?
EN

Stack Overflow用户
提问于 2014-01-27 07:39:37
回答 3查看 2.2K关注 0票数 4

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

我想要解决的问题是内存不足的问题。人们报告说,他们在小型冲压机上出现了内存不足问题。我想测试这个,但我现在唯一的机器有一个比他们的大得多的公羊。我在想,如果我在这台大内存机器上做测试,并跟踪内存的使用情况,那么内存在较小的内存机器上是否是相同的,还是会使用更少的内存呢?

谢谢!埃尔本

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-27 07:43:41

您需要查看JVM内存参数。实际上,您可以为JVM设置尽可能多的内存:

代码语言:javascript
复制
-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

因此,在您的情况下,您可以像在另一台机器中一样设置大量内存。因此,您的机器将不会占用比Xmx值更多的内存。

您可能也需要检查这个参数。

代码语言:javascript
复制
-XX:MaxNewSize=  -> this need to be 40% from your Xmx value
-XX:NewSize=614m -> this need to be 40% from your Xmx value

此外,您还可以告诉JVM应该使用哪种类型的GC:

代码语言:javascript
复制
-XX:+UseConcMarkSweepGC

因此,如果在这两台机器中设置此参数,则最有可能得到相同的结果和相同的GC活动。

票数 6
EN

Stack Overflow用户

发布于 2014-01-27 09:08:11

是的会的。这取决于默认的最大堆大小。可以使用以下命令检查当前最大堆大小:

代码语言:javascript
复制
java -XshowSettings:vm

在我妻子的笔记本电脑(Windows8.1,4 GB RAM,32位)上,它是247.5 MB,而我的笔记本电脑(Windows7,8 GB RAM,64位)是903.12 MB。

这是由Java决定的(请参阅https://stackoverflow.com/a/4667635/3236102,虽然这里显示的值是用于服务器类计算机的,但它们可能与普通机器不同)。

如果您希望vm模拟一台低内存的机器,只需使用-Xmx标志将您的机器限制为较少的RAM (例如,用于128MB内存分配的-Xmx128m )。

最好的方法可能是要求遇到内存不足问题的用户检查他们的最大堆大小(使用上面的命令),并将您的机器设置为相同的最大堆大小,因此您具有与他们相同的条件。

票数 3
EN

Stack Overflow用户

发布于 2014-01-27 10:45:36

这个问题可以用更大的RAM复制。

首先,您需要从报告问题的人员那里获得堆大小配置。使用相同的堆大小来再现问题。

在jvm参数下面使用堆设置。

代码语言:javascript
复制
-Xmx512m   Max heap memory that is used to store objects
-XX:MaxPermSize=64m   Max perm gen size. This space is used to store meta info like loaded classes etc
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21375331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档