内存泄漏

矫情吗;* 2022-08-13 11:46 302阅读 0赞

OS万岁

1、图书馆书架上有4096本书,其中3072本可以借阅。其余1024本,放在玻璃柜里,不能查阅

2、学生在图书馆内可以阅读3072本中的任意一本,但是必须知道它的索引号

3、自觉的同学在使用完毕后,放回原处

4、不自觉的同学在使用完毕后,没有放回原处,而是丢在阅览室内的课桌上

5、图书馆管理员定时到阅览室内收集散落在课桌上的书籍,然后放回原处

一天贪同学为了做某种统计调研,陆续从书架上取了3000本书,每次取来查阅后,丢在阅览室,结果他坐的书桌上,堆集如山!其他同学去查阅,发现无果,向管理员“告急”!管理员此时可以强制收回也可以不强制归位堆积的书籍。等贪同学离馆后,管理员把堆积书籍归位!管理员万岁!

这就是——内存泄漏^_^

万法归宗

翻译成专业术语就是

1、系统地址空间一般按照1:3比例划分,用户使用最大空间3G,OS的1G.用户不能访问操作系统的地址空间

2、用户地址空间,通过地址访问任意字节

3、有经验和素养的程序员,malloc,new后配对free,delete,自己使用,自己负责返还

4、没有经验和马虎的程序员,malloc,new后不管了,使用后,丢弃

5、OS在进程终结时候,回收所有分配的内存,以及其他资源

程序在运行过程中不停的分配内存,每次使用过后就直接丢弃不管。导致OS系统内存紧缺。必要时候OS可以强制中止程序运行(比如检测到恶意性),一般不会中止。最后在程序终结时候,回收所有资源!OS万岁

总结

在程序运行期间,程序申请了一块内存,而没有释放,且丢失了对这块内存访问的指针,那么这块内存就是泄漏了!在程序运行期间,OS一直认为这块内存用户在使用,虽然程序已经失去对它的访问方式,不能够再使用。但是OS了解不到这一点!如果程序一直分配,丢弃,分配丢弃这样迭代下去,最终OS将内存告急,引发系统恐慌,增加运行开销(交换区进行换出不使用的页,以腾出空间),甚至荡机!而等到此程序终结,所有‘丢失’的内存将全部回收!注意OS自身不会内存泄漏,若有,且你发现了,这一定是bug。恭喜你,赶快提交给内核开发人员,或者自己打补丁,可能就是一次很好的机遇!

下面两篇内存泄漏的帖子总结的不错,有兴趣的可以瞅瞅

参考1:http://blog.csdn.net/xd1103121507/article/details/7226568

参考2:http://blog.csdn.net/na\_he/article/details/7429171

发表评论

表情:
评论列表 (有 0 条评论,302人围观)

还没有评论,来说两句吧...

相关阅读

    相关 内存泄漏

    1. 内存管理 在Java中,内存管理主要是由Java虚拟机(JVM)来负责的,而不需要我们手动管理内存分配和释放。以下是Java中的内存管理的关键概念和机制: 1.

    相关 内存泄漏

    1.什么是内存泄漏(Memory Leak)? 简单地说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,

    相关 内存泄漏

    不再用到的内存,没有及时释放。 比如说闭包:当前变量已经使用完毕但依然被引用,导致[垃圾回收机制][Link 1]无法回收这就造成了内存泄漏。 主要存在内存泄漏的问题点:

    相关 内存泄漏

    OS万岁 1、图书馆书架上有4096本书,其中3072本可以借阅。其余1024本,放在玻璃柜里,不能查阅 2、学生在图书馆内可以阅读3072本中的任意一本,但是必须知道

    相关 内存泄漏

    内存泄漏 是指程序中己动态分配的堆内存 由于某种原因程序未释放或无法释放,造成系统内存的浪费 导致,程序运行速度减慢,甚至系统崩溃等 系统申请分配内存进行使用(

    相关 内存泄漏【转】

    浅谈内存泄漏(一) 对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比 如Smart Pointer,Garb