我想知道在执行memory
..
method
是否有pre-defined
method
来计算分配的memory
或任何要计算的过程......
注意:Method
可能包含任意数量的行......
例如:通过在调用特定method
之前和之后调用System.currentTimeMillis();
来计算执行method
所花费的时间。这样就有办法计算memory
必需的
谢谢......
答案 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));