Java Eclipse中设置的运行时堆大小
输出为: heapsize is::245 这是否意味着我的运行时只有245M内存?我的电脑有8GB内存。我怀疑这个输出是正确的,因为仅运行Eclipse就要消耗超过245M的资源 在Eclipse中,我单击Windows->Preferences->Java->Installed JRE,并按如下方式设置默认JVM参数: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
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.