首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >btrace测试调用函数所使用的内存

btrace测试调用函数所使用的内存
EN

Stack Overflow用户
提问于 2012-08-14 09:53:47
回答 1查看 230关注 0票数 0

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

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

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

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

EN

回答 1

Stack Overflow用户

发布于 2012-08-14 15:30:22

您无法通过在调用某个方法之前和之后区分JVM堆的使用情况来判断该方法需要多少内存。当方法正在执行时,系统中发生了太多的事情,您所获得的数字表示由JVM从OS分配的内存-结果将不会告诉您任何事情。

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

最精确的内存跟踪包括捕获在方法调用期间创建并直接连接到该调用的所有新实例的分配信息-例如。在被调用的方法中创建,在所有从被跟踪的方法中递归调用的方法中创建,也在被跟踪的方法调用树中任何地方递归产生的所有可运行对象中创建。要做到这一点可能有点棘手,但这完全可以通过BTrace来实现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11944730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档