如果我使用Runtime
类(freeMemory()
,totalMemory()
和gc()
),那么它将为我提供MB以上的内存(即1,000,000字节)。
但是,如果我在任何在线编译器上运行相同的代码,则它们将显示以KB为单位的内存(即1000字节)。这是一个巨大的差异。
这意味着Runtime
不显示程序使用的实际内存。
我需要计算程序使用的实际内存。这些在线编译器用来计算程序使用的内存的方式是什么?
首先计算代码执行之前使用的内存,即代码的第一行。
long beforeUsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
计算代码执行后使用的内存:
long afterUsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
然后,您可以执行以下操作:
long actualMemUsed=afterUsedMem-beforeUsedMem;
它将为您提供程序所使用的实际内存。
对于进一步的内存分析,最好的选择是像jvisualvm这样的探查器工具。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句