首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存分析器

内存分析器
EN

Stack Overflow用户
提问于 2012-05-29 15:12:58
回答 1查看 481关注 0票数 2

需要创建我们自己的Java分析器。CPU分析部分是在IBM的“构建自己的分析器”一文的帮助下完成的。现在也在检查内存分析的类似类型。在搜索中找到了Hprof,但对我来说没有用。我想要的是获得一个类中每个方法所消耗的内存(以字节为单位

例如:

考虑在java文件中有类test1、类test2

test1中存在method1()

test2中存在method2()

在每个方法中都会声明很多变量,所以我想要的是

test1/method1 1= 12个字节(如果可能,显示轨迹,即它是如何出现的,如字符数+整数数等)

test2/method2 2=18字节

请帮帮忙

EN

回答 1

Stack Overflow用户

发布于 2012-05-29 15:25:26

如果你对一个给定的方法在堆栈上占用了多少内存感兴趣,那么有two attributes in the class files提供了这方面的信息:

max_locals告诉你为局部变量保留了多少空间(以32位为增量,即乘以4得到字节)。

max_stack告诉您在此方法执行期间操作数堆栈可以增长到的最大值。

如果调用此方法,将这两个函数相加,您将粗略估计堆栈将增长多少。除了这些值之外,还会有额外的(可能是恒定的)开销,但这些应该是主要的可变因素。

您可以使用字节码操作库(如BCEL )读取.class文件并提取这些属性。

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

https://stackoverflow.com/questions/10794627

复制
相关文章

相似问题

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