在线课程和其他网站反复说,在堆空间中创建的对象具有全局访问权限。这种全局访问是否意味着在被垃圾收集器销毁之前,该对象可以从程序中的任何位置进行访问?如果是这样,请同时添加一个显示此内容的简短代码。
来源:
答案 0 :(得分:2)
这仅仅意味着实际驻留在堆 空间中的对象可以被任何线程从程序中的任何位置访问。也就是说,如果给定的线程知道对象在堆空间中的位置。
然后有堆栈 内存,出于所有实际目的,您可以考虑使用本地内存作为方法。对堆中的对象的引用和原始值存储在堆栈存储器中。如果线程A创建对对象OBJ的引用,则另一个线程B不能访问此引用,除非线程A与B共享(复制)它。
但是,线程B也可以创建它自己对该对象的本地引用。
这是一个过于简单的答案,但正确的答案不适合Stack Overflow论坛格式。幸运的是,有很多资源可以非常详细地介绍java内存模型。
因此,请阅读本教程,我不认为它可以比这里解释得更好: memory model