淘客熙熙

主题:【原创】工业控制的人机界面设计(上) -- 晨枫

共:💬86 🌺180
全看分页树展 · 主题 跟帖
家园 这个似乎有点问题

最可恨的就是memory leak,任务退出时内存不清理干净,要不了多久,内存就爆满,必须reboot了。

现代的多任务操作系统内核,包括NT(Windows XP和Windows 2000都用NT内核),在每个应用程序进程结束后,都会回收该进程所使用的资源,如memory,socket,file handle,etc。

所谓内存泄露,是某个应用程序进程allocated a chunk of memory and lost track of it。对于操作系统内核来说,该块内存依然是在该进程的地址空间内,由该进程所使用。

换句话说,如果某个应用程序进程终止,所有该进程从操作系统那里得到的内存,包括泄露的,都会被操作系统收回,以供其他进程或者操作系统自己使用。

如果在终止应用程序任务后,依然不能reclaim内存,有可能是该应用程序还有faceless后台进程(Windows的术语好像叫Services)在运行,并且内存泄露是发生在后台进程里。

由于内存泄露很难完全避免,所以某些操作系统,比如Linux,有所谓的out of memory killer,在物理内存可能耗尽之前,会根据某些heuristics来找出是哪些进程在制造麻烦,并强制终止这些进程以避免物理内存耗尽。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河