美文网首页
Android 关于内存管理的一些知识

Android 关于内存管理的一些知识

作者: trayliu_小马过河 | 来源:发表于2017-12-25 17:23 被阅读16次

通常来说,对内存的管理、优化有以下两种方式:

  • 在对象不需要的时候确保对象能够被销毁
  • 如果对象没有被销毁,则该对象一定是作为可以复用的对象。(单例)

内存区分

寄存器(Registers):用于存储指令,地址,数据。
栈(Stack):存放基本类型的数据,对象的引用和函数地址等,由系统控制。
堆(Heap):存放对象本身和数组,由开发者控制。
静态域(Static field):存储静态变量。
常量池(constant pool):存储常量。

堆/栈 GC管理 存取速度
由GC系统控制,变量生命周期结束后,由GC决定何时收回
由虚拟机控制,变量生命周期结束后,由虚拟机释放该变量占用的内存空间

Dumpsys Meminfo

adb dumpsys meminfo 指令是Apps-Running的底层实现的,可以dump出当前系统的内存使用状态,如果不指定包名,则dump整个系统的内存分配状态。通常使用中,需要指定包名来获取自己App的内存分配状态。
adb dumpsys meminfo com.xxx.xxx

shared内存与private内存

private内存,即完全属于每个应用独享的那部分已经分配的内存。

shared内存,Android中的基础公共库、组件、还有一些Native 的libraries,Android系统为了节省内存资源,为他们提供了公共的内存资源。这些内存被所有运行的进程所共享。

Android进程始于Zygote进程,Zygote进程是一切进程的来源,公共资源、组件和native的library都在Zygote中初始化。其他进程通过fork的方式产生新的进程,这样新的进程产生时就已经带有了Shared内存所预先加载的内容,从而提高了应用进程的创建速度。

相关文章

  • Android 关于内存管理的一些知识

    通常来说,对内存的管理、优化有以下两种方式: 在对象不需要的时候确保对象能够被销毁 如果对象没有被销毁,则该对象一...

  • Swift 内存管理

    Swift 内存管理 [TOC] 前言 本文将介绍一下Swift中的内存管理,关于内存的一些基础知识可以参考我以前...

  • Android性能优化-内存泄漏的几个案例

    JVM内存管理 Java采用GC进行内存管理。深入的JVM内存管理知识,推荐《深入理解Java虚拟机》。 关于内存...

  • Android 中内存泄漏的原因和解决方案

    前言 之前研究过一段时间关于 Android 内存泄漏的知识,大致了解了导致内存泄漏的一些原因,但是没有深入去探究...

  • 内存优化

    前言 之前学习过一段时间关于 Android 内存泄漏的知识,大致了解了导致内存泄漏的一些原因,但是没有深入去探究...

  • Android 系统内存管理机制

    系列文章Java 内存模型Android 系统内存管理机制Android 性能优化(三)之内存管理Android ...

  • Java 内存模型- JMM

    系列文章Java 内存模型Android 系统内存管理机制Android 性能优化(三)之内存管理Android ...

  • Android内存管理机制

    Android内存管理机制 [转载自大果仁Pareto的 android内存管理机制] 1、基于Linux内存管理...

  • 第四章 程序崩溃处理

    内存管理 都是一些内存管理方面的知识,具体参考内存管理书籍即可,特别注意点如下 内存权限读、写、执行权限无权限可能...

  • Objective-C 内存管理基础

    前言 之前的两篇拙文C语言-内存管理基础、C语言-内存管理深入 介绍了关于C语言在内存管理方面的相关知识。但是对于...

网友评论

      本文标题:Android 关于内存管理的一些知识

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