gpt4 book ai didi

java - java中LinkedList的一个节点类的内存使用(包含实例引用)

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:04 25 4
gpt4 key购买 nike

在 Sedgewick 的 algorithms4 书的第 201 页中,Node 占用的内存为 40 字节:

class Node{
Item item;
Node next;
}

给出的细目是:

  • 对象开销 = 16 字节
  • item reference = 8 bytes(=内存地址)
  • 下一个引用 = 8 字节
  • 额外开销 = 8 字节

额外开销的解释是:

A nested non static (inner)class as our Node class (page 142) require an extra 8 bytes (for reference to the enclosing instance)

他提到的这个封闭实例是什么? Node 类仅包含 itemnext 变量。

谁能澄清一下?

最佳答案

它说Node 是一个非静态内部 类。如果该类是static inner 类,它可以在没有封闭类的情况下存在。因为它不是静态的,所以它依赖于(属于)定义它的外部类的实例。

所以如果我有一个类 Bar 和一个静态内部类 Foo:

public class Bar {
private class Foo {
}
}

为了使用Foo,我必须有一个封闭的Bar,例如

Foo foo= new Bar().new Foo();

如果 Foo 是静态的,我可以这样做

Foo foo= new Bar.Foo(); //i.e. new Bar.Foo()

因此,您需要这些额外的 8 个字节用于 Bar 的封闭实例。

关于java - java中LinkedList的一个节点类的内存使用(包含实例引用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17232345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com