指向同一个对象的多个引用变量是否每个占用与对象相同的内存占用

Do multiple reference variables pointing to the same object each take up the same memory footprint as the object

比如说我有四个 类 A、B、C 和 D;其中 D 的构造函数将 A、B 和 C 作为参数。如果我有以下实现:

public static main(String[] args) {
  A = new A();
  B = new B();
  C = new C();
  D = new D(A, B, C);
}

D 的实例变量是:

  private A objA;
  private B objB;
  private C objC;

比如A(new A())的"value"会在D实例化后复制到objA吗?

Java 只有引用和原始类型。当您将引用分配给变量时,无论它引用什么对象,它总是占用相同数量的内存。通常一个引用是 4 个字节,但对于大小超过 32 GB 的大堆可以是 8 个字节。

Will, for instance, the "value" of A (new A()) be copied to objA after D's instantiation?

在这种情况下,A 的值是对对象的引用,并且该引用被复制。引用的对象未被触及(既未复制也未读取)