Xmx是3072m但Runtime.getRuntime()。totalMemory()返回59mb

时间:2011-02-20 14:10:21

标签: java eclipse memory-size

我在ubuntu中使用eclipse EE,从eclipse网站下载.tar.gz文件并在我的主目录中解压缩。我在eclipse.ini中将-Xmx设置为3072m。这是:

-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.1.R36x_v20100810
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-XX:MaxPermSize=256m
-Xms2048m
-Xmx3072m

但是当我试图通过

看到我的总记忆时
Runtime.getRuntime().totalMemory()

返回62193664即59mb。我也尝试从终端设置vmagrs启动eclipse,但没有任何改变。我不知道发生了什么。如何设置堆大小?我的总ram是4gb,我使用64位Ubuntu和64bit eclipse。任何信息都对我很有帮助。

3 个答案:

答案 0 :(得分:1)

简而言之,Runtime.getRuntime().totalMemory()没用,它会返回一代GC的大小。

此主题有一个解释:http://mail.openjdk.java.net/pipermail/hotspot-gc-use/2008-December/000318.html

答案 1 :(得分:1)

1)Runtime.getRuntime().totalMemory()不返回允许的最大堆大小。

2)我不确定你是如何运行Runtime.getRuntime().totalMemory()但我想你是在Java应用程序中从Eclipse中执行的。在这种情况下,您在另一个JVM中执行调用,该JVM不继承eclipse.ini文件中的属性。如果要确定它的初始和最大堆大小,可以转到Run->Run Configurations...。单击当前运行配置,然后在右侧窗格中单击Arguments选项卡。在那里,您可以指定VM参数,例如:

-Xms64m
-Xmx1024m 

之后您可以继续尝试Runtimeeclipse.ini为Eclipse IDE配置资源,而不是为您运行的Java应用程序配置资源。

干杯!

答案 2 :(得分:0)

谢谢。所以解决方案是在运行中设置VM参数 - >在eclipse中运行配置。我把它设置为-Xms3072m -Xmx3072m,现在运行时totalMemory()返回3087007744,在4gb ram中使用64位Ubuntu 10.10和64位JVM返回2944MB。