Runtime.maxMemory()
和Runtime.totalMemory()
之间的确切区别是什么? javadoc对此非常模糊(对我而言)。
这两种方法的典型用例是什么,即何时使用相应的另一种方法是不合适的?
答案 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