stringtranslate.com

Недоступная память

В программировании , недостижимая память — это блок динамически выделенной памяти , где программа , выделившая память, больше не имеет достижимого указателя , который ссылается на него. Аналогично, недостижимый объект — это динамически выделенный объект , который не имеет достижимой ссылки на него. Неформально, недостижимая память — это динамическая память , к которой программа не может получить доступ напрямую или добраться, начав с объекта, к которому она может получить доступ напрямую, а затем следуя цепочке ссылок указателей.

В реализациях динамического распределения памяти, использующих сборщик мусора , объекты возвращаются после того, как они становятся недоступными. Сборщик мусора может определить, достижим ли объект; любой объект, который определен как более не достижимый, может быть освобожден . Многие языки программирования (например, Java , C# , D , Dylan , Julia ) используют автоматическую сборку мусора.

Напротив, когда память становится недоступной в реализациях динамического выделения памяти, требующих явного освобождения, память больше не может быть явно освобождена. Недоступная память в системах, использующих ручное управление памятью, приводит к утечке памяти .

Некоторые сборщики мусора реализуют слабые ссылки . Если объект доступен только через слабые ссылки или цепочки ссылок, включающие слабую ссылку, то объект называетсяweakly reachable . Сборщик мусора может рассматривать слабо достижимыйграф объектовкак недостижимый и освобождать его. (И наоборот, ссылки, которые не позволяют объекту быть собранным мусором, называютсясильными ссылками; слабо достижимый объект недостижим любой цепочкой, состоящей только из сильных ссылок.) Некоторыеобъектно-ориентированныеязыки со сборкой мусора, такие какJavaиPython, имеют слабые ссылки.Пакет Java java.lang.refподдерживает мягкие, слабые и фантомные ссылки, что приводит к дополнительным состояниям достижимости объектаsoftly reachableиphantom reachable.

Недоступная память (в языках, таких как C, которые не восстанавливают память) часто связана со старением программного обеспечения .

Внешние ссылки