读本科三年级时,有一次操作系统课,老师点我回答问题。问题是什么具体已经忘了。
但我回答的核心内容是“进程在运行过程中其占用的存储空间可能增加”,问题回答完毕后,被老师反回一句,“进程占用的存储空间怎么可能会增加”。
当然本人说话也是有根据的,因为书上确实提到了会增加的,只是没说怎么会增加。
前段时间,有新闻说ubuntu发生内存泄漏,然后就查了下与内存泄漏相关的东东。
所以就发现了,为什么进程占用的空间会增加了。
================================================
应用程序导致的内存泄漏一般原因:申请了动态存储空间而没有释放,这样会导致系统性能下降或死机。
但一想进程存储空间不是一定的吗,即使泄漏也不会影响到其他进程的吧,怎么会死机的呢。
而且进程结束后,也是会释放它的所有的空间的啊。
========但为什么呢。?
因为进程地址空间确实会增加,增加到占用所有的用户空间内存,这样当然会导致死机。
malloc等内存分配例程会调用sbrk系统调用来完成分配,而sbrk在进程原有空间的堆上找不到足够空间时,会扩充进程的堆,这样就会扩充了进程占用的存储空间了。当然这样,也就可能会吞噬掉整个用户空间的内存了,当然就可能会导致死机了。
阅读(326) | 评论(0) | 转发(0) |