zoukankan      html  css  js  c++  java
  • 简单通俗讲解 android 内存泄漏

    在柠檬班社区看到老师一篇android 内存泄漏写的通俗易懂,绝对是小白能看懂的!

    原文:http://www.lemfix.com/topics/2

    平常会听到程序员说“内存泄漏”,看表面的意思就是内存泄漏,可能会导致APP卡住,表面理解的就是这样。那么,什么情况会发生内存泄漏?这个问题是我一直在关注,但有些文章写得有点复杂,不过最近找到一篇比较通俗易懂的!

    JVM 和 ART

    JVM:是运行Java程序的虚拟机;JVM 在运行Java程序时,会创建一个实例,通过在实际的计算机上仿真模拟各种计算机功能,它具有完善的硬件架构(如处理器、堆栈、寄存器等),可以让java程序运行与操作系统无关。

    ART:android虚拟机,是android系统运行android程序的虚拟机,其指令集是基于寄存器架构的,执行特有的文件格式-dex字节码来完成生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等功能。

    内存区域

    Java在JVM虚拟出的内存环境中运行,JVM的内存可分为三个区:堆(heap)、栈(stack)和方法区(method)。

    内存泄漏 和 内存溢出

    内存泄露(Memory leak) 程序在向系统申请分配内存空间后(new),在使用完毕后未释放。结果导致一直占据该内存单元,我们和程序都无法再使用该内存单元,直到程序结束,这是内存泄露。

    内存溢出(out of memory) 程序向系统申请的内存空间超出了系统能给的,比如一车最多能坐5个人,你却非要塞下10个,车就挤爆了。 大量的内存泄露会导致内存溢出(oom)

    内存泄漏原因分析

    未完

  • 相关阅读:
    Java实现 LeetCode 50 Pow(x,n)
    Java实现 LeetCode 50 Pow(x,n)
    Java实现 LeetCode 49 字母异位词分组
    Java实现 LeetCode 49 字母异位词分组
    Java实现 LeetCode 49 字母异位词分组
    Java实现 LeetCode 48 旋转图像
    Java实现 LeetCode 48 旋转图像
    Java实现 LeetCode 48 旋转图像
    Java实现 LeetCode 47 全排列 II(二)
    Java实现 LeetCode 47 全排列 II(二)
  • 原文地址:https://www.cnblogs.com/cuitang/p/11243001.html
Copyright © 2011-2022 走看看