【问题标题】:Is there a way to know how much memory is used by a certain function in java?有没有办法知道java中某个函数使用了多少内存?
【发布时间】:2020-09-11 18:10:02
【问题描述】:

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

【问题讨论】:

标签: java performance memory


【解决方案1】:

在 Java 中知道给定程序的峰值内存需求是有问题的,更不用说函数了,因为垃圾收集器是惰性的,并且在启动和收集垃圾之前让程序增长到最大可用内存。因此,很难区分程序生成多少垃圾与程序实际至少需要多少内存。

我们之前使用的一种低技术方法是使用main 方法将相关函数隔离到一个单独的程序中,并使用不同的-Xmx 值运行它,从256m 开始,然后将值减少一半(所以 128, 64, 32, ...)直到程序抛出 OutOfMemoryError。在大多数情况下,您可以在十几次调用中达到它,并给出几 MB 的准确度范围(要了解基线 JVM 需求,使用简单的“hello-world”程序重复这些步骤并减去该数字)。您甚至可以回溯并逐渐增加该值,以更准确地学习所需的值,尽管通常一个大概的数字就足够了。

【讨论】:

    猜你喜欢
    • 2011-07-31
    • 1970-01-01
    • 2019-03-21
    • 2013-05-21
    • 2019-03-13
    • 2019-01-04
    • 2016-07-07
    • 2019-11-17
    • 1970-01-01
    相关资源
    最近更新 更多