需要创建我们自己的Java分析器。CPU分析部分是在IBM的“构建自己的分析器”一文的帮助下完成的。现在也在检查内存分析的类似类型。在搜索中找到了Hprof,但对我来说没有用。我想要的是获得一个类中每个方法所消耗的内存(以字节为单位
例如:
考虑在java文件中有类test1、类test2等
test1中存在method1()
test2中存在method2()
在每个方法中都会声明很多变量,所以我想要的是
test1/method1 1= 12个字节(如果可能,显示轨迹,即它是如何出现的,如字符数+整数数等)
test2/method2 2=18字节
请帮帮忙
发布于 2012-05-29 15:25:26
如果你对一个给定的方法在堆栈上占用了多少内存感兴趣,那么有two attributes in the class files提供了这方面的信息:
max_locals告诉你为局部变量保留了多少空间(以32位为增量,即乘以4得到字节)。
max_stack告诉您在此方法执行期间操作数堆栈可以增长到的最大值。
如果调用此方法,将这两个函数相加,您将粗略估计堆栈将增长多少。除了这些值之外,还会有额外的(可能是恒定的)开销,但这些应该是主要的可变因素。
您可以使用字节码操作库(如BCEL )读取.class文件并提取这些属性。
https://stackoverflow.com/questions/10794627
复制相似问题