Android性能:内存篇之内存回收

本文详细探讨了Android系统中的内存回收,包括垃圾回收(GC)的基本原理、Stop-the-world事件,以及各种垃圾回收算法,如引用计数、可达性分析、标注并清理、拷贝和标注并整理回收法。此外,还特别提到了Android系统如何处理内存回收,特别是Dalvik VM和ART环境下的策略。
摘要由CSDN通过智能技术生成

Android性能:内存篇之内存回收

在学会内存性能优化之前我们得先了解内存如何回收,在《Android性能:内存篇之虚拟机概论》我们已经了解了虚拟机的概念及JVM结构体系与内存空间,在《Android性能:内存篇之进程内存管理》中已了解到系统如何通过管理进程处理内存,接下来我们详细了解进程内部如果管理内存。

一、内存回收

一般来说,程序使用内存的方式遵循先向操作系统申请一块内存,使用内存,使用完毕之后释放内存归还给操作系统。然而在传统的C/C++等要求显式释放内存的编程语言中,记得在合适的时候释放内存是一个很有难度的工作,因此Java等编程语言都提供了基于垃圾回收算法的内存管理机制。

Garbage Collection(GC)

Garbage Collection(垃圾回收机制)主要是处理 Java堆Heap ,和部分方法区内的对象。而栈区的数据,在超出作用域后会被JVM自动释放掉,所以其不在JVM GC的管理范围内。

Stop-the-world

在学习Java GC 之前,我们需要记住一个单词:stop-the-world 。它会在任何一种GC算法中发生。Stop-the-world 意味着JVM因为需要执行GC而停止了应用程序的执行。当stop-the-world 发生时,除GC所需的线程外,所有的线程都进入等待状态,直到GC任务完成。GC优化很多时候就是减少stop-the-world 的发生。

二、垃圾回收算法

在JVM规范中并没有明确GC的运作方式,各个厂商可以采用不同的方式去实现垃圾回收器。这里讨论几种常见的GC算法。常见的垃圾回收算法有引用计数法(Reference Counting)、标注并清理(Mark and Sweep GC)、拷贝(Copying GC)、标注并整理回收法(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值