我正在对大文件的转换算法进行执行分析。我想知道是否可以计算我正在使用的不同文件的函数所需的内存大小。
最佳答案
在 Java 中,了解给定程序(更不用说函数)的峰值内存需求是有问题的,因为垃圾收集器很懒,并且在启动和收集垃圾之前让程序增长到最大可用内存。因此,很难区分程序生成多少垃圾与程序实际至少需要多少内存。
我们之前使用的一种低技术方法是将相关函数隔离到具有 main
方法的单独程序中,并使用不同的 -Xmx
值运行它,从例如 256m
并将值减半(例如 128、64、32,...),直到程序抛出 OutOfMemoryError
。在大多数情况下,您可以在十几次调用内达到它,给出几 MB 的精度范围(要了解基线 JVM 需求,请使用简单的“hello-world”程序重复这些步骤并减去该数字)。您甚至可以回溯并逐步增加该值,以更准确地了解所需的值,尽管通常一个大概的数字就足够了。
关于java - 有没有办法知道java中某个函数使用了多少内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61996744/