1
我正在开发一个红黑树,并使用Eclipse内存分析工具来测量其节点占用的空间。当我用一个short替换int时,为什么Java对象的大小不会超过两个字节?
我注意到,当我更换int变量我用,以保持树的高度与短变,每个节点的保留堆下降40〜32
public class RedBlackBST {
private static final boolean RED = true;
private static final boolean BLACK = false;
private Node root;
public class Node {
public int key;
public Node left, right;
private boolean color;
private int N;
}
你可以看到这个在以下附图中的效果:
随着对于N的int(用于高度)浅并保留堆为树的随机节点是40.
随着短N的浅和保留堆为树的随机节点是32.
我认为差异应该只是两个字节。为什么是8?
我也非常感谢这两个数字有关其余变量的解释。我很困惑,两个大小堆都是2的分隔符,因为我期望布尔变量的颜色大小为1.请记住,属性选项卡中的第一个引用是指向RedBlackBST实例。
您的意思是说这两个引用('left'和'right')占用的大小取决于被引用的对象的大小?我知道链接的问题或多或少会回答我的问题,但如果有人能够更彻底地解释(对于每个变量)为什么我的对象的大小总计为40和32,我将不胜感激。 – Panagiotis
@ T.J。克罗德:删除你的评论,而不是回答我,只是因为你写的东西没有真正思考是不是很有礼貌,尤其是在将我的问题标记为重复之后... – Panagiotis