在 java 的堆 space 中创建的对象如何具有全局访问权限?
How objects created in java's heap space have global access?
在线课程和其他网站反复说在堆 space 中创建的对象具有全局访问权限。这种全局访问是否意味着在被垃圾收集器销毁之前可以从程序中的任何地方访问该对象?如果这是真的,请添加一个简短的代码来说明这一点。
来源:
- 课程:YouTube
- "Any object created in the heap space has global access and can be referenced from anywhere of the application." JournalDev
这只是意味着实际上驻留在堆space中的对象可以被任何线程访问,从程序中的任何位置。也就是说,如果给定线程知道对象在堆中的位置 space.
然后是 stack memory,出于所有实际目的,您可以考虑使用 local 方法的记忆。对堆中对象的引用和原始值存储在堆栈内存中。如果线程 A 创建对对象 OBJ 的引用,则另一个线程 B 无法访问此引用,除非线程 A 与 B 共享(复制)它。
但是,线程 B 也可以创建它自己的对象本地引用。
这个答案过于简单,但正确的答案不适合 Stack Overflow 论坛格式。幸运的是,有大量资源详细介绍了 java 内存模型。
因此,请阅读本教程,我认为没有比这里更好的解释了:
memory model
在线课程和其他网站反复说在堆 space 中创建的对象具有全局访问权限。这种全局访问是否意味着在被垃圾收集器销毁之前可以从程序中的任何地方访问该对象?如果这是真的,请添加一个简短的代码来说明这一点。
来源:
- 课程:YouTube
- "Any object created in the heap space has global access and can be referenced from anywhere of the application." JournalDev
这只是意味着实际上驻留在堆space中的对象可以被任何线程访问,从程序中的任何位置。也就是说,如果给定线程知道对象在堆中的位置 space.
然后是 stack memory,出于所有实际目的,您可以考虑使用 local 方法的记忆。对堆中对象的引用和原始值存储在堆栈内存中。如果线程 A 创建对对象 OBJ 的引用,则另一个线程 B 无法访问此引用,除非线程 A 与 B 共享(复制)它。
但是,线程 B 也可以创建它自己的对象本地引用。
这个答案过于简单,但正确的答案不适合 Stack Overflow 论坛格式。幸运的是,有大量资源详细介绍了 java 内存模型。
因此,请阅读本教程,我认为没有比这里更好的解释了: memory model