我正在开发一棵红黑树并使用 Eclipse Memory Analyzer Tool 来测量其节点占用的空间。
我注意到,当我用一个短变量替换用于保持树高度的 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。请记住,属性选项卡中的第一个 ref 是 RedBlackBST 实例。