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

Java 何时使用Runtime.maxMemory()和totalMemory(),java,Java,Runtime.maxMemory()和Runtime.totalMemory()之间的确切区别是什么?javadoc对此相当含糊(对我来说) 这两种方法的典型用例是什么,即何时不适合使用各自的另一种方法?totalMemory()返回当前使用的内存量,而maxMemory()告诉JVM总共可以分配多少内存 注意:由此可知:totalMemory()总内存是当前分配给JVM的内存。它随时间而变化。最大内存是JVM能够达到的最大内存。它是总内存的上限。MaxMemory()是由Xmx参数设置的值t

Runtime.maxMemory()
Runtime.totalMemory()
之间的确切区别是什么?javadoc对此相当含糊(对我来说)

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

totalMemory()返回当前使用的内存量,而
maxMemory()
告诉JVM总共可以分配多少内存


注意:由此可知:
totalMemory()总内存是当前分配给JVM的内存。它随时间而变化。最大内存是JVM能够达到的最大内存。它是总内存的上限。

MaxMemory()是由Xmx参数设置的值

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


最大堆空间不会随着JVM的生命周期而改变。JVM总是试图根据创建的新对象的数量来扩展totalMemory()的大小,但不能超过maxMemory()的大小,除非我们得到java.lang.OutOfMemoryError。

程序开始运行后如何获取Xms参数?“totalMemory()返回当前使用的内存量“已使用?!”?!您是说已分配?“可能随时间变化”或多或少地表示“等于初始堆大小”在一般情况下不太可靠。