有没有办法知道Java中某个函数使用了多少内存?

时间:2020-05-25 06:11:51

标签: java performance memory

我正在对具有大文件的转换算法进行性能分析。我想知道是否可以为我正在使用的不同文件计算函数所需的内存大小。

1 个答案:

答案 0 :(得分:0)

在Java中,要知道给定程序(而不是功能)的峰值内存需求是有问题的,这是因为垃圾收集器是惰性的,并且在启动并收集垃圾之前让程序增长到最大可用内存。因此,很难区分程序产生多少垃圾与程序实际最少需要多少内存。

我们以前使用的一种低技术方法是使用main方法将所讨论的功能隔离到一个单独的程序中,并以不同的-Xmx值运行,例如从256m开始然后将该值减半(即128、64、32等),直到程序抛出OutOfMemoryError。在大多数情况下,您可以在十二次调用中达到此目标,并提供几MB的精度范围(要了解JVM的基本要求,请使用简单的“ hello-world”程序重复这些步骤,然后减去数字)。您甚至可以回溯并逐步增加该值,从而以更高的精度来学习所需的值,尽管一般而言,就足够了。