Tag: hprof

保留大小的计算,包括堆栈帧变量?

我发现了很多关于“保留大小”的问题, 接受的答案似乎是: 对象的保留大小是该对象从垃圾回收中保留的内存数量。 现在,我一直在使用Netbeans分析器库 (保留大小的计算在HprofHeap.java完成)在HprofHeap.java文件(如此处定义的)中保留大小的编程计算。 工作得很好(对不起,为简洁起见,使用了kotlin): val heap: Heap = HeapFactory.createHeap(myHeap.toFile()) val threadClass: JavaClass = heap.getJavaClassByName("java.lang.Thread") val instanceFilter = { it: Instance -> threadClass == it.getJavaClass() } val sizeMap = heap.allInstances .filter { instanceFilter(it) } .toMap({ findThreadName(it) /* not shown */ }, { it.retainedSize }) 我注意到,当sizeMap只有边缘数量的保留大小时,Netbeans仅为不在堆栈上的对象计算保留大小。 因此,分配给Thread局部变量(分配在堆栈上) 不会被包含在保留的大小中。 我的问题是:有没有办法让netbeans库视为依赖对象的堆栈元素的方式,例如,Yourkit Profiler是它的计算? 如果对上一个问题的答案是“否”,我将如何去添加这样的功能?