如果我有一个更小的冲压机和一个更大的冲压机。我在它们上运行相同的java代码。jvm会更懒散地在机器上使用更大的ram进行垃圾收集吗?
我想要解决的问题是内存不足的问题。人们报告说,他们在小型冲压机上出现了内存不足问题。我想测试这个,但我现在唯一的机器有一个比他们的大得多的公羊。我在想,如果我在这台大内存机器上做测试,并跟踪内存的使用情况,那么内存在较小的内存机器上是否是相同的,还是会使用更少的内存呢?
谢谢!埃尔本
发布于 2014-01-27 07:43:41
您需要查看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因此,在您的情况下,您可以像在另一台机器中一样设置大量内存。因此,您的机器将不会占用比Xmx值更多的内存。
您可能也需要检查这个参数。
-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:
-XX:+UseConcMarkSweepGC因此,如果在这两台机器中设置此参数,则最有可能得到相同的结果和相同的GC活动。
发布于 2014-01-27 09:08:11
是的会的。这取决于默认的最大堆大小。可以使用以下命令检查当前最大堆大小:
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 )。
最好的方法可能是要求遇到内存不足问题的用户检查他们的最大堆大小(使用上面的命令),并将您的机器设置为相同的最大堆大小,因此您具有与他们相同的条件。
发布于 2014-01-27 10:45:36
这个问题可以用更大的RAM复制。
首先,您需要从报告问题的人员那里获得堆大小配置。使用相同的堆大小来再现问题。
在jvm参数下面使用堆设置。
-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 etchttps://stackoverflow.com/questions/21375331
复制相似问题