我们如何知道执行方法所需的内存

How can we know memory required in executing an method

我想知道在执行 method 时分配了多少 memory ..

是否有任何 pre-defined method 来计算分配的 memory 或任何过程来计算 ...

注意:Method 可能包含任意数量的行 ...

例如:要计算执行 method 所花费的时间,可以通过在调用特定 method 之前和之后调用 System.currentTimeMillis(); 来计算。这样有没有办法计算出memory required

谢谢...

您可以使用 Runtime.totalMemory(),其中(根据 Javadoc)returns Java 虚拟机中的内存总量。

System.out.println(Runtime.getRuntime().totalMemory());

您可以使用探查器。

它们通常提供对堆(以及许多其他有趣的东西)的洞察,因此您可以比较执行方法前后的分配情况,这也是除了静态分析之外查找内存泄漏的标准方法。

更高级的工具为您提供更详细的见解和分析选项。

对于初学者,请看一下 visualvm,它随 Oracle 当前的所有 JDK 一起免费提供。

您的方法在 java 中没有大小,您的对象有。

我建议使用java代理sizeofag。在对对象调用方法之前测量对象大小,然后在调用方法之后测量对象大小 again.See 下面的示例。

在调用您的程序时,将以下行添加到您的 java 调用中。

-javaagent:sizeofag.jar

当你的程序是运行时,你可以使用如下的SizeOfAgent。

YourObject b = new YourObject();
System.out.println(b + ": " + SizeOfAgent.sizeOf(b));
b.method();
System.out.println(b + ": " + SizeOfAgent.sizeOf(b));