什么是
这两种方法的典型用例是什么,即在何时使用其中一个不合适使用另一个?
Runtime.maxMemory()
和Runtime.totalMemory()
之间的确切区别?对于我来说,javadoc文档相当模糊。这两种方法的典型用例是什么,即在何时使用其中一个不合适使用另一个?
Runtime.maxMemory()
和Runtime.totalMemory()
之间的确切区别?对于我来说,javadoc文档相当模糊。totalMemory()
返回当前使用的内存量,而 maxMemory()
则告诉您JVM总共可以分配多少内存。totalMemory() <= maxMemory()
,您还可以通过 maxMemory() - totalMemory()
得到“剩余内存量”。totalMemory()
进行诊断。
总内存是当前分配给JVM的内存,随时间而变化。最大内存是JVM可能达到的最大内存。它是总内存的上限。
MaxMemory()是由Xmx参数设置的值。
totalMemory()代表JVM当前堆大小,即当前由对象占用的已使用内存和可用于新对象的空闲内存的组合。根据javadoc,totalMemory()返回的值可能随时间和环境而变化。
JVM totalMemory也等于JVM的初始堆大小
最大堆空间在JVM生命周期内不会改变。JVM始终尝试根据创建的新对象数量扩展totalMemory()的大小,但不会超过maxMemory()大小,否则将出现java.lang.OutOfMemoryError。