何时使用Runtime.maxMemory()和totalMemory()

时间:2011-09-29 13:58:52

标签: java

Runtime.maxMemory()Runtime.totalMemory()之间的确切区别是什么? javadoc对此非常模糊(对我而言)。

这两种方法的典型用例是什么,即何时使用相应的另一种方法是不合适的?

4 个答案:

答案 0 :(得分:7)

totalMemory()返回当前使用的内存量,而maxMemory()表示JVM可以分配多少内存。

注意:由此产生的结果如下:totalMemory() <= maxMemory(),您还可以maxMemory() - totalMemory()

获得“剩余多少内存”

一个用例用于诊断程序使用的内存量,并为此使用totalMemory()
注意:两者都只是指堆内存,而不是堆栈内存。

答案 1 :(得分:5)

总内存是当前分配给JVM的内存。它随时间而变化。最大内存是JVM可以达到的最大内存。这是总内存的上限。

答案 2 :(得分:3)

MaxMemory()是Xmx参数

设置的值

答案 3 :(得分:0)

totalMemory(),表示JVM的当前堆大小,它是当前由对象占用的内存和可用于新对象的可用内存的组合。根据环境,totalMemory()返回的javadoc值可能会随时间变化。 JVM totalMemory也等于JVM的初始堆大小

最大堆空间不会在JVM生命周期中发生变化.Jvm总是试图根据创建的新对象来扩展totalMemory()的大小但是不超出maxMemory()大小unles我们将得到java.lang.OutOfMemoryError