【发布时间】:2014-09-04 11:56:51
【问题描述】:
我的一位讲师坚持认为,如果进程没有自行清理,那么晚于 XP 的 Windows 版本将永久泄漏内存。
我觉得这很难相信。如果这是真的,这是多久以前解决的,哪些操作系统率先解决了这个问题?
【问题讨论】:
-
即使 W95 在终止时也清理了进程资源,(假设它首先设法不蓝屏:)。
标签: memory-management memory-leaks operating-system
我的一位讲师坚持认为,如果进程没有自行清理,那么晚于 XP 的 Windows 版本将永久泄漏内存。
我觉得这很难相信。如果这是真的,这是多久以前解决的,哪些操作系统率先解决了这个问题?
【问题讨论】:
标签: memory-management memory-leaks operating-system
它与“多久以前”无关,也没有任何操作系统“开创”它。它与相关操作系统的工作方式有关。现在可能有很多操作系统在进程完成时仍然会泄漏未释放的内存(尽管它们很可能是嵌入式系统)。
例如,如果我没记错的话,一些 DOS 程序曾经故意“泄漏”内存来安装中断处理程序。将运行一个程序,分配一些内存并将一些代码复制到其中,修改中断表并返回而不释放内存。 DOS 不会清理内存,因此中断处理程序仍驻留在内存中。
我不相信有一个操作系统可以“启动这一切”。我相信在进程退出后释放未释放的资源只是操作系统实现process isolation的副作用。
我认为这在很多情况下都不是问题,因此将问题称为“已解决”或“未解决”对您来说有点误导。例如,在嵌入式系统上,所有进程都经过精心编写,以便在退出时释放所有分配的内存,没有理由实现任何跟踪哪个进程拥有哪个内存并进行可能昂贵的未释放资源检查和清理的任何东西。在这样的系统上,操作系统在进程后不清理是完全有效的 - 开始不是问题。
【讨论】: