gpt4 book ai didi

java - btrace 测试调用函数使用的内存

转载 作者:行者123 更新时间:2023-12-02 07:37:56 27 4
gpt4 key购买 nike

使用 btrace,我想测试我的函数使用了多少堆,所以我写:

enter image description here

上面的代码是我使用的 btrace 示例。

操作我的函数两次,我得到了两个不同的结果:

enter image description here

如图所示,堆成本不同:一个是另一个的两倍。

最佳答案

通过比较某个方法调用前后的 JVM 堆使用情况,您无法得知该方法需要多少内存。当方法执行时,系统中发生了太多事情,并且您获得的数字代表 JVM 从操作系统分配的内存 - 结果不会告诉您任何信息。

如果您想要至少可以远程使用的东西,您应该在方法调用之前和之后进行堆转储(Sys.Memory.dumpHeap(fileName)),并使用堆遍历器来区分这两者。尽管如此,您仍然会收到相当多的噪音,但这比依赖操作系统分配的内存要好得多。

最精确的内存跟踪将包括捕获在方法调用期间创建并直接连接到该调用的所有新实例的分配信息 - 例如。在被调用的方法中、从被跟踪方法递归调用的所有方法中以及在被跟踪方法调用树中的任意位置递归生成的所有可运行对象中创建。完成这项工作可能有点棘手,但 BTrace 可以完美实现。

关于java - btrace 测试调用函数使用的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11944730/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com