我在一个网站上读到(http://www.rajeshpatkar.com/articles/javarefpnt/),当我们实例化一个类时,也就是创建一个对象时,Java会在内存中为该对象分配空间。
变量e中存储了一个句柄,它不是指针,即它不存储内存中对象的地址。
该说明给出了指针数组的示例。内存地址存储在a[1]位置,当对象移动时,此位置将更新为新地址。
那么为什么要使用这个数组,而不是直接存储地址(它指出这有助于GC,但我没有理解),并在对象移动时更新存储在e中的地址?
我花了很多时间来理解这个问题,但仍然没有找到令我满意的答案。如果您可以用一个例子来解释变量'e'实际上存储了什么,那就太棒了。
谢谢 :)
Emp e = new Emp();
变量e中存储了一个句柄,它不是指针,即它不存储内存中对象的地址。
该说明给出了指针数组的示例。内存地址存储在a[1]位置,当对象移动时,此位置将更新为新地址。
那么为什么要使用这个数组,而不是直接存储地址(它指出这有助于GC,但我没有理解),并在对象移动时更新存储在e中的地址?
我花了很多时间来理解这个问题,但仍然没有找到令我满意的答案。如果您可以用一个例子来解释变量'e'实际上存储了什么,那就太棒了。
谢谢 :)
e = someOtherObject;
不要被JVM可能如何实现它所困扰。只需记住:变量存储值。引用类型变量中存储的值是对象引用。该值告诉JVM对象在哪里。 :-) - T.J. Crowder