美文网首页
内存泄漏(memory leak)与内存溢出(out of me

内存泄漏(memory leak)与内存溢出(out of me

作者: 北漂农村小伙儿 | 来源:发表于2016-11-21 17:25 被阅读128次

    对于初学者来说,主要是能区分内存泄漏和内存溢出,它们有区别但也是有联系的。

    打个比方,给你一个池子,你用了一部分,但你用完并没有把它还回去,甚至你也不知道怎么还回去,弄丢了,系统也没法拿回去,这就导致了内存泄漏。比如new了一个对象,用完没有销毁,比如流没有关闭,bitmap用完没有recycle掉等情况。

      而内存溢出就是,你把多于一池子的水硬塞给一池子,水就溢出来了,所以这就是内存溢出,Android总共运行内存一般为16M,同时运用很多个APP,每个APP的内存肯定不多且有限,你同时加载了几张高清大图,内存不够,于是溢出了,程序崩溃了。

举个列子:

在MainActivity中,Toast.makeText(this,"内存泄漏了",Toast.LENGTH_LONG);

       这段代码太常见了,很多人都这么写,那么我们考虑一下,当吐司还没弹出来的时候,你关掉了MainActivity,但是由于吐司引用着MainActivity.this,所以导致MainActivity无法被回收,这个activity实例无法被系统回收,就是内存泄漏了,它弄丢了。而你反复执行刚才的操作,吐司没弹出来就关掉MainActivity,导致泄漏越来越严重。你可用的内存越来越少,最后随便干点事用点内存,就溢出了,所以内存泄漏会最终导致内存溢出。

其中再提到一点强引用和若引用,强引用就是默认引用,就算出现内存溢出也会加载,还有一个软引用和弱引用。比如new weakRoftRence(bitmap),把bitmap放在弱引用中,出现oom(内存溢出)时,bitmap就不会强行加载。

  当然还能设置堆和栈内存的比例,在清单文件里设置。今天只是简单分析一下。

相关文章

  • 2022-03-29

    一::内存溢出(out of memory)和内存泄漏(memory leak)的区别内存溢出:应用所需要的内存超...

  • 11.2-1 Bitmap2 OOM

    简介 Out Of Memory(内存溢出):占用内存超出系统分配内存; memory leak(内存泄漏):占用...

  • 内存泄漏(memory leak)与内存溢出(out of me

    对于初学者来说,主要是能区分内存泄漏和内存溢出,它们有区别但也是有联系的。 打个比方,给你一个池子,你用了...

  • 【Android测试】内存泄漏检测 LeakCanary

    什么是内存泄漏和内存溢出?内存泄漏有什么危害?LeakCanary检测内存泄漏? 内存泄漏(Memory Leak...

  • 内存泄漏

    内存溢出(Memory Overflow)和内存泄露(Memory Leak)的区别1)内存泄漏例如:new了一块...

  • Android内存泄漏和内存溢出详解

    什么是内存泄漏和内存溢出 内存泄漏(Memory Leak):指的是程序在申请内存空间之后,无法释放已占有的空间,...

  • Android开发简记:探索App性能优化之Android内存泄

    一、内存泄漏和内存溢出 内存泄露(Memory Leak):指程序在申请内存后,无法释放已申请的内存空间。 内存溢...

  • Android关于内存溢出和内存泄漏

    内存泄漏容易导致内存溢出!→内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用...

  • 内存泄漏总结

    首先内存泄漏和内存溢出是2个不同的概念 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存...

  • JVM体系结构

    内存溢出和内存泄漏的区别 内存溢出:out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,...

网友评论

      本文标题:内存泄漏(memory leak)与内存溢出(out of me

      本文链接:https://www.haomeiwen.com/subject/bamupttx.html