繁体   English   中英

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

[英]How to calculate memory usage of a Java program?

如果我使用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这样的探查器工具。

  • 请记住,Runtime.getRuntime()。totalMemory(),此内存是您的JVM可用的总内存。
  • java -Xms512m -Xmx1024m ,这意味着程序的总内存将从512MB开始,这可能会延迟加载到最大1024MB。
  • 因此,如果您在不同的JVM上运行同一程序,则Runtime.getRuntime()。totalMemory()可能会给您带来不同的结果。

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

top命令将为您提供许多信息。

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

只需键入top并在终端中按Enter,然后在命令部分中检查Java。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM