Как объекты, созданные в куче Java, имеют глобальный доступ? - PullRequest
0 голосов
/ 25 апреля 2018

Онлайн-курс и другие веб-сайты постоянно говорят, что объекты, созданные в куче, имеют глобальный доступ. Означает ли этот глобальный доступ, что объект может быть доступен из любой точки программы, прежде чем он будет уничтожен сборщиком мусора? Если это так, добавьте также короткий код, показывающий это.

Источник:

  1. Курс: YouTube
  2. «Любой объект, созданный в пространстве кучи, имеет глобальный доступ и на него можно ссылаться из любого места приложения». JournalDev

1 Ответ

0 голосов
/ 25 апреля 2018

Это просто означает, что объекты, которые фактически находятся в heap space , могут быть доступны для любого потока из любой точки программы. То есть, если данный поток знает, где находится объект в пространстве кучи.

Тогда есть стек память , который для всех практических целей вы могли бы рассмотреть локальную память для методов. Ссылки на объекты в куче и примитивные значения хранятся в памяти стека. Если поток A создает ссылку на объект OBJ, другой поток B не сможет получить доступ к этой ссылке, пока поток A не поделится (скопирует) ее с B.

Однако поток B также может создавать собственную локальную ссылку на объект.

Это слишком упрощенный ответ, однако правильный ответ не подходит для формата форума Stack Overflow. К счастью, существует множество ресурсов, которые подробно описывают модель памяти Java.

Поэтому, пожалуйста, прочитайте этот урок, я не думаю, что его можно объяснить гораздо лучше, чем здесь: модель памяти

...