Android是如何管理App内存的--Android内存优化第二弹

本文探讨Android如何管理App内存,主要对比Dalvik与ART虚拟机,包括AOT预编译技术对性能的影响,GC效率的提升,以及Android内存分配、回收策略。在App切换时,系统利用LRU缓存机制管理内存,当内存不足时,会依据进程级别和内存消耗进行优化。
摘要由CSDN通过智能技术生成

引言

前文我们普及了下关于GC的一些事, 对GC的一些个概念, 流程有个大概的了解. 在Application的启动流程一文中, 我们有提到, Android中每个App默认情况下是运行在一个独立进程中的, 而这个独立进程正是从Zygote孵化出来的VM进程. 也就是说, 每个App是运行在独立的VM空间的. 那么Android是怎么管理这些App的内存的呢, 这些独立运行的VM中的内存管理又是怎样的呢?

今天我们就来聊下Android中的内存管理.

1, Dalvik & ART

Android在4.4之前一直使用的Dalvik虚拟机作为App的运行VM的, 4.4中引入了ART作为开发者备选, 5.0起正式将ART作为默认VM了.

我们首先来简单了解下二者:

1.1 Dalvik

如果只是想简单了解, 个人觉得百度百科上这个Dalvik的介绍基本就满足要求了.

如果大家想深入, 可以看下老罗的Android之旅Dalvik的相关博文, 从代码层面上分析了Dalvik的启动, 运行机制等. 值得一看.

需要说明的是, Dalvik采用的是JIT技术, 在应用程序启动时, JIT通过进行连续的性能分析来优化程序代码的执行, 在程序运行的过程中, Dalvik在不断的进行将字节码编译成机器码的工作.

1.2 ART

ART 取自 Android RunTime. Android用其取代Dalvik, 主要目的就是为了提升运行性能. 所以, ART相比Dalvik有几个关键的提升:

引入AOT(ahead-of-time)预编译技术

在安装apk的过程中, ART会使用dex2oat程序所有的字节码预编译成了机器码. 应用程序运行过程中无需进行实时的编译工作, 只需要进行直接调用. 故而提高了应用程序的运行效率.

GC效率
  • 由原来的两次
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值