Java Eclipse中设置的运行时堆大小

Java Eclipse中设置的运行时堆大小,java,eclipse,heap,Java,Eclipse,Heap,输出为: heapsize is::245 这是否意味着我的运行时只有245M内存?我的电脑有8GB内存。我怀疑这个输出是正确的,因为仅运行Eclipse就要消耗超过245M的资源 在Eclipse中,我单击Windows->Preferences->Java->Installed JRE,并按如下方式设置默认JVM参数: public class Test { public static void main(String[] args) { long h

输出为:

heapsize is::245

这是否意味着我的运行时只有245M内存?我的电脑有8GB内存。我怀疑这个输出是正确的,因为仅运行Eclipse就要消耗超过245M的资源

在Eclipse中,我单击Windows->Preferences->Java->Installed JRE,并按如下方式设置默认JVM参数:

public class Test {
        public static void main(String[] args) {
            long heapsize = Runtime.getRuntime().totalMemory();
            System.out.println("heapsize is :: " + heapsize/(1024*1024));
        }

}
然后再次运行测试。它仍然打印出相同的号码245。这怎么会发生

已编辑:来自Java文档for Runtime.getRuntime().totalMemory():


您的程序没有在Eclipse的堆空间中运行。Eclipse为您的程序生成一个单独的JVM

Runtime.totalMemory()
确实返回当前堆大小

-Xms
参数指定初始堆大小。如果Java无法通过垃圾收集释放足够的内存,直到达到
-Xmx
设置的最大值,它将扩展。此时,JVM将以
OutOfMemoryError
退出


Java内存管理是一个复杂的主题,涉及垃圾收集、将对象从托儿所移动到永久空间等。

Runtime.getRuntime().totalMemory(),这说明了什么?我有一个运行良好的程序,但今天我突然从内存中得到了这个消息。在Eclipse中,“Windows->Preferences->Java->Installed JRE->Default JVM arguments”为在Eclipse中运行的应用程序设置堆大小,而不是为Eclipse本身设置堆大小。扩展了我的答案,希望解决您的后续问题我的Eclipse目前正在运行,因此,运行时消耗的内存应该远远超过245MB。我还是不明白为什么它只打印出245MB。在我的Linux性能监视器中,我注意到内存使用量是3.6G。正如我在回答中所说的,您的程序在Eclipse的单独JVM中运行,因此
Runtime.getRuntime().totalMemory()
不会返回有关Eclipse的任何信息。只有程序的JVM。
-ea -Xms256m -Xmx4096M
Returns the total amount of memory in the Java virtual machine. 
The value returned by this method may vary over time, depending on the 
host environment.