Gan*_*h S 14 java memory-management runtime
如果我使用Runtime(freememory()和totalmemory()和gc())类,那么它会给我高于mb的内存(即1000000字节).
但是如果我在任何在线编译器上运行相同的代码,那么它们会显示kb中使用的内存(即1000字节).这是巨大的差异.
这意味着运行时不显示程序使用的实际内存.
我需要计算程序使用的实际内存.这些在线编译器用于计算程序使用的内存的方式是什么?
Ami*_*ati 23
首先计算代码执行前使用的内存,即代码的第一行.
long beforeUsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
Run Code Online (Sandbox Code Playgroud)
计算代码执行后使用的内存: -
long afterUsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
long actualMemUsed=afterUsedMem-beforeUsedMem;
Run Code Online (Sandbox Code Playgroud)
它将为您提供程序使用的实际内存.
对于进一步的内存分析,您最好的选择是任何分析器工具,如jvisualvm.
您可以在ubuntu中使用top命令来检查运行java程序时%CPU使用率或%内存使用率.
top命令会给你这些很多信息.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
只需
top在终端输入并按Enter键,然后在命令部分查看java.