首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jol GraphLayout输出中的“(其他东西)”是什么?

jol GraphLayout输出中的“(其他东西)”是什么?
EN

Stack Overflow用户
提问于 2015-05-04 00:45:27
回答 1查看 858关注 0票数 5

当使用jol的GraphLayout类打印从对象实例引用的对象的图形时,一些输出条目表示“(其他东西)”,而不是类型和引用路径。例如,考虑打印20个随机整数对象列表的下列代码:

代码语言:javascript
复制
List<Integer> foo = new Random().ints(20).boxed().collect(Collectors.toList());
System.out.println(GraphLayout.parseInstance(foo).toPrintable());

此代码打印:

代码语言:javascript
复制
java.util.ArrayList object externals:
          ADDRESS       SIZE TYPE                PATH                           VALUE
         d642ecc8         24 java.util.ArrayList                                (object)
         d642ece0         16 java.lang.Integer   .elementData[0]                212716192
         d642ecf0         56 (something else)    (somewhere else)               (something else)
         d642ed28         16 java.lang.Integer   .elementData[1]                1503736768
         d642ed38         16 java.lang.Integer   .elementData[2]                -2099759732
         d642ed48         16 java.lang.Integer   .elementData[3]                445566433
         d642ed58         16 java.lang.Integer   .elementData[4]                -1528625708
         d642ed68         16 java.lang.Integer   .elementData[5]                -555424299
         d642ed78         16 java.lang.Integer   .elementData[6]                1607595284
         d642ed88         16 java.lang.Integer   .elementData[7]                763466772
         d642ed98         16 java.lang.Integer   .elementData[8]                638331919
         d642eda8         16 java.lang.Integer   .elementData[9]                -1742026575
         d642edb8         16 java.lang.Integer   .elementData[10]               1920101909
         d642edc8         80 (something else)    (somewhere else)               (something else)
         d642ee18         16 java.lang.Integer   .elementData[11]               2001035318
         d642ee28         16 java.lang.Integer   .elementData[12]               -1920666937
         d642ee38         16 java.lang.Integer   .elementData[13]               -991335829
         d642ee48         16 java.lang.Integer   .elementData[14]               -47760298
         d642ee58         16 java.lang.Integer   .elementData[15]               855824902
         d642ee68        104 [Ljava.lang.Object; .elementData                   [212716192, 1503736768, -2099759732, 445566433, -1528625708, -555424299, 1607595284, 763466772, 638331919, -1742026575, 1920101909, 2001035318, -1920666937, -991335829, -47760298, 855824902, 2137884845, -226328690, 1472718384, 890105604, null, null]
         d642eed0         16 java.lang.Integer   .elementData[16]               2137884845
         d642eee0         16 java.lang.Integer   .elementData[17]               -226328690
         d642eef0         16 java.lang.Integer   .elementData[18]               1472718384
         d642ef00         16 java.lang.Integer   .elementData[19]               890105604

搜索jol "something else"在DuckDuckGo和谷歌没有返回任何有用的点击。

“(其他的)”条目代表什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-04 00:45:27

“(其他东西)”的意思就是--不是这个对象图的一部分。那里可能有其他对象(活动对象或垃圾对象),或者仅仅是堆中存在一些VM内部原因的空白。

注意,图中的对象表是按地址排序的。当第一个元素被添加时,ArrayList的elementData数组被延迟初始化,当第十个元素被添加到列表中时,elementData被重新分配以便为更多的元素腾出空间。这在堆区域中创建了与(现在的垃圾)数组相对应的空白,jol将它们打印为“(其他的)”条目。负责打印这些条目的代码是GraphLayout 246号线 (至少在这篇文章中)。

jol打印有关堆间隙的信息,以帮助理解垃圾收集器行为。后面的一些jol实例演示了这一点,比如压实实例,它展示了从ArrayList引用的对象最初是如何稀疏的,但是垃圾收集器是如何压缩的。

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

https://stackoverflow.com/questions/30021092

复制
相关文章

相似问题

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