我们怎么知道执行方法所需的内存

时间:2015-04-19 07:15:51

标签: java memory

我想知道在执行memory ..

时分配了多少method

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

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

例如:通过在调用特定method之前和之后调用System.currentTimeMillis();来计算执行method所花费的时间。这样就有办法计算memory必需的

谢谢......

3 个答案:

答案 0 :(得分:3)

您可以使用分析器。

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

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

我建议使用java代理sizeofag。在对象上调用方法之前,请测量对象大小,然后在调用方法后再次测量对象大小。请参阅下面的示例。

在调用程序时,在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));