java - java堆空间中创建的对象如何具有全局访问权限?

标签 java object global heap-memory

在线类(class)和其他网站反复提到,在堆空间中创建的对象具有全局访问权限。这种全局访问是否意味着该对象在被垃圾收集器销毁之前可以从程序中的任何位置访问?如果这是真的,请同时添加一个简短的代码来显示这一点。

来源:

  1. 类(class):YouTube
  2. “在堆空间中创建的任何对象都具有全局访问权限,并且可以从应用程序的任何位置引用。” JournalDev

最佳答案

这仅仅意味着实际上驻留在空间中的对象可以由任何线程从程序中的任何位置访问。也就是说,如果给定线程知道对象驻留在堆空间中的位置。

然后是一个堆栈 内存,出于所有实际目的,您可以将其视为方法的本地内存。对堆中对象和原始值的引用存储在堆栈内存中。如果线程 A 创建对对象 OBJ 的引用,则另一个线程 B 无法访问该引用,除非线程 A 与 B 共享(复制)该引用。

但是,线程 B 也可以创建它自己的对该对象的本地引用。

这是一个过于简单的答案,但是正确的答案不适合 Stack Overflow 论坛格式。幸运的是,有大量资源详细介绍了 Java 内存模型。

因此,请阅读本教程,我认为没有比这里更好的解释了: memory model

关于java - java堆空间中创建的对象如何具有全局访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50010762/

相关文章:

函数内部的 Python 全局关键字可见性

java - 制作线程的差异?

java - DrawerLayout ListView 未使用 GLSurfaceView 作为内容绘制

java - 创建仅包含某些字母和特定长度的随机字符串

java - 在一行中使用 replace() 替换很多东西

javascript - JS - 对象构造方法

javascript - 尝试使用 for 循环对对象内的数组求和

Java变量表示的对象类型

java - 在整个应用程序中全局捕获键盘组合以显示 Java 中隐藏的 JDialog

javascript - 全局函数变量未定义