不可訪問內存

計算機科學中,不可訪問內存是指一組沒有任何可訪問指針指向的由電腦程式進行動態分配的內存塊。類似的,一個不可訪問對象是指沒有可訪問引用型指向的動態分配對象。通俗來說,不可訪問內存是程序無法直接訪問的動態內存,同時也無法通過指針指向一個可訪問的起始對象來進行訪問。

動態內存分配的實現是採用了垃圾回收機制,在一個對象不可訪問後,它會被回收。垃圾收集器能決定是否一個對象還是可訪問的;任何被確定不可訪問的對象將會被釋放。在許多程式語言中(例如:JavaC#D語言Dylan)都使用了自動垃圾回收機制。

相反的,在動態內存分配機制中,當需要明確釋放的內存變得不可訪問時,此內存可以不再明確釋放。在使用人工內存管理中,系統中的不可訪問內存會導致內存泄漏

一些垃圾收集器使用弱引用。如果一個對象能夠通過弱引用或者包含弱引用的連結,那麼這個對象可以被稱為弱訪問。垃圾收集器能夠把弱訪問的對象圖視為不可訪問的,並且釋放它。(反過來說,防止對象被當作垃圾收集的引用被稱為強引用;通過只含有強引用的連結來訪問的弱可訪問對象是不可訪問的。)一些垃圾回收的面向對象語言,例如JavaPython,擁有弱引用的特性。Java包英語Java packagejava.lang.ref提供了軟引用,弱引用和虛引用,產生了其他對象訪問狀態可軟訪問可虛訪問

不可訪問內存往往和軟件老化英語Software aging有關。

參見

外部連結

A useful discussion can be found at Ethan Nicholas's Blog