不可访问内存

计算机科学中,不可访问内存是指一组没有任何可访问指针指向的由计算机程序进行动态分配的内存块。类似的,一个不可访问对象是指没有可访问引用型指向的动态分配对象。通俗来说,不可访问内存是程序无法直接访问的动态内存,同时也无法通过指针指向一个可访问的起始对象来进行访问。

动态内存分配的实现是采用了垃圾回收机制,在一个对象不可访问后,它会被回收。垃圾收集器能决定是否一个对象还是可访问的;任何被确定不可访问的对象将会被释放。在许多编程语言中(例如:JavaC#D语言Dylan)都使用了自动垃圾回收机制。

相反的,在动态内存分配机制中,当需要明确释放的内存变得不可访问时,此内存可以不再明确释放。在使用人工内存管理中,系统中的不可访问内存会导致内存泄漏

一些垃圾收集器使用弱引用。如果一个对象能够通过弱引用或者包含弱引用的链接,那么这个对象可以被称为弱访问。垃圾收集器能够把弱访问的对象图视为不可访问的,并且释放它。(反过来说,防止对象被当作垃圾收集的引用被称为强引用;通过只含有强引用的链接来访问的弱可访问对象是不可访问的。)一些垃圾回收的面向对象语言,例如JavaPython,拥有弱引用的特性。Java包英语Java packagejava.lang.ref提供了软引用,弱引用和虚引用,产生了其他对象访问状态可软访问可虚访问

不可访问内存往往和软件老化英语Software aging有关。

参见

外部链接

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