
内存泄漏是编写代码时最不想要遇到的情况之一,为什么?
内存泄漏是在编写代码的时候最不想要遇到的情况之一,一旦是遇到了之后就需要停止已经运行的程序或程序根本就没有运行起来,找到出错的地方,进行修改,因为内存泄露本身是一种给数据分配了一个空间,但在结尾没有回收的现象,一旦是程序运行到了最后,就会提醒你出错,这里说一下内存泄露产生的几种原因。
一、单利静态造成
单例静态的未回收是内存泄露产生几种原因最常见的一种,因为单例静态自身的使用周期与应用的周期一样长,在漫长的使用过程之中,单例还占据着对象引用开辟出来的空间,会造成最后程序结尾的内存泄露。 就好比是我借了你的钱,你钱的一部分到了我的手上,并承诺规定时间内归还,但你忘了这件事情,那么就不还了,等着资金链断了才最终想起来这件事情。
二、内部类持有外部类
如果是一个外部类生成的一个实例对象,一直被内部类数据在使用着,到了最后哪个外部类已经不再使用了,但是内部类还是一直在使用,并没有对这段内存进行释放,所以这个外部类不回被回收,这也是产生内存泄露的一个原因。
三、库和协议的连接
当我们在进行数据库的连接,或者网络连接的过程之中,都需要用到数据进行传输,这个数据的使用,一直随着连接的关闭而停止,但是一直到最后,这种连接都没有关闭,就会造成大量的对象没有办法回收,从而造成了内存的泄露,已经应用的崩溃卡死。
四、变量不合理的定义域
在变量使用过程之中,要对变量的定义域进行约束,如果是变量定义域在使用的过程之中本身的范围超过了所需要的范围,并且没有置空,则就会造成内存泄露的出现。