是否可以以编程方式检查一些对象占用多少内存(使用JVM内存中的整个子树)。我想说(来自java代码)
'告诉我当前JVM中有多少内存占用了JPanel 当我们假设提到的JPanel是根时,整个引用子树 这棵树'。
我想知道我是否可以通过这种方式比较两个JPanels(或JFrame或其他)需要多少内存,而且需要更多内存 - 而不分析转储。而且我想知道答案是否为'是'这个值的确切程度。
答案 0 :(得分:3)
如你对qustion的评论中所述,java中的sizeOf问题不容易解决,不仅因为你试图调整大小的对象实际上不是内存图的根,而且还因为计算大小有问题静态字段等(它们属于整个类,而不是任何特定的实例)。
然而,有一些方法可以获得一些有意义的数据。
第一种方法是使用附加到jvm的java代理,后者又调用sun / oracle从java 6开始添加的size estimation function。有关说明,请参阅this page
第二种方法是基于理论计算估计对象树的大小。有一个库可以为您here
执行此操作答案 1 :(得分:1)