我正在测试一段代码的内存消耗,使用:
long totalMemory = Runtime.getRuntime().totalMemory();
long freeMemory = Runtime.getRuntime().freeMemory();
已用内存是totalMemory
和freeMemory
之间的差值。我在完全相同的条件下启动并运行了同一个程序三次。但是使用的内存量差异很大:
1120M
802M
312M
这可能是什么原因造成的?我应该取三者的平均值作为代码的内存使用量吗?第一次这样做,感谢您对此的任何见解。
最佳答案
这是由于 java java vitual machine (JVM) 造成的。 Java 使用三种类型的内存结构。
- 堆内存
- 非堆内存
- 其他内存
所以垃圾收集器也运行在 JVM 中。这也影响改变内存使用。您可以引用此链接以获取更多详细信息。
关于java - 测量 Linux 中的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22793892/