在线类(class)和其他网站反复提到,在堆空间中创建的对象具有全局访问权限。这种全局访问是否意味着该对象在被垃圾收集器销毁之前可以从程序中的任何位置访问?如果这是真的,请同时添加一个简短的代码来显示这一点。
来源:
- 类(class):YouTube
- “在堆空间中创建的任何对象都具有全局访问权限,并且可以从应用程序的任何位置引用。” JournalDev
最佳答案
这仅仅意味着实际上驻留在堆空间中的对象可以由任何线程从程序中的任何位置访问。也就是说,如果给定线程知道对象驻留在堆空间中的位置。
然后是一个堆栈 内存,出于所有实际目的,您可以将其视为方法的本地内存。对堆中对象和原始值的引用存储在堆栈内存中。如果线程 A 创建对对象 OBJ 的引用,则另一个线程 B 无法访问该引用,除非线程 A 与 B 共享(复制)该引用。
但是,线程 B 也可以创建它自己的对该对象的本地引用。
这是一个过于简单的答案,但是正确的答案不适合 Stack Overflow 论坛格式。幸运的是,有大量资源详细介绍了 Java 内存模型。
因此,请阅读本教程,我认为没有比这里更好的解释了: memory model
关于java - java堆空间中创建的对象如何具有全局访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50010762/