如何计算java程序的内存使用量?

时间:2016-06-20 06:47:24

标签: java memory-management runtime

如果我使用Runtime(freememory()和totalmemory()和gc())类,那么它会给我mb以上的内存(即1000000字节)。

但是如果我在任何在线编译器上运行相同的代码,那么它们会显示kb中使用的内存(即1000字节)。 这是巨大的差异。

这意味着运行时不显示程序使用的实际内存。

我需要计算程序使用的实际内存。 这些在线编译器用于计算程序使用的内存的方式是什么?

2 个答案:

答案 0 :(得分:17)

首先计算代码执行前使用的内存,即代码的第一行。

long beforeUsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();

计算代码执行后使用的内存: -

long afterUsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();

然后你可以这样做:

long actualMemUsed=afterUsedMem-beforeUsedMem;

它会为您提供程序使用的实际内存。

对于进一步的内存分析,最好的选择是jvisualvm之类的任何分析器工具。

  • 记住它,即Runtime.getRuntime()。totalMemory(),这个内存 是JVM可用的总内存。
  • java -Xms512m -Xmx1024m ,表示程序的总内存 将从512MB开始,可能会懒洋洋地加载到最大1024MB。
  • 因此,如果您在不同的JVM上运行相同的程序, Runtime.getRuntime()。totalMemory()可能会给你不同的结果。

答案 1 :(得分:5)

您可以在ubuntu中使用 top 命令检查运行java程序时%CPU使用率或%内存使用率。

top命令会为您提供这些信息。

PID USER PR NI VIRT RES SHR S %CPU {{ 1}} %MEM

只需输入 TIME+ COMMAND然后按Enter键 在你的终端和在命令部分检查java。