Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19342
  • 博文数量: 7
  • 博客积分: 300
  • 博客等级: 二等列兵
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-02 21:27
文章分类
文章存档

2010年(7)

我的朋友
最近访客

分类: LINUX

2010-04-27 15:49:03

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