Java 在Linux中测量内存使用率
我正在使用以下方法测试代码块的内存消耗:Java 在Linux中测量内存使用率,java,linux,runtime,Java,Linux,Runtime,我正在使用以下方法测试代码块的内存消耗: long totalMemory = Runtime.getRuntime().totalMemory(); long freeMemory = Runtime.getRuntime().freeMemory(); 已用内存是totalMemory和freemory之间的差异。我在完全相同的条件下启动并运行了相同的程序三次。但使用的内存量差别很大: 1120M 802M 312M 这可能是什么原因造成的?我应该取这三个值的平均值作为代码的内存使用率吗
long totalMemory = Runtime.getRuntime().totalMemory();
long freeMemory = Runtime.getRuntime().freeMemory();
已用内存是totalMemory
和freemory
之间的差异。我在完全相同的条件下启动并运行了相同的程序三次。但使用的内存量差别很大:
1120M
802M
312M
这可能是什么原因造成的?我应该取这三个值的平均值作为代码的内存使用率吗?第一次这样做,感谢您对这方面的任何见解。这是因为java虚拟机(JVM)。Java使用三种类型的memmory结构
根据Java运行时库:“totalMemory方法返回的值可能会随着时间的推移而变化,具体取决于主机环境。”我在另一次运行后立即运行,但没有任何变化。因此,您是否在同一jvm上运行每个程序,或者你用自己的jvm调用每个程序?我肯定垃圾收集与此有关。除非您使用实际的工具(例如
jvisualvm
或jconsole
)评测代码,否则很难确定。我在Eclipe中运行它,所以每次都使用相同的JVM。