缺点:可使用内存降为原来的一半 。

文章插图
2.2.3 标记整理法标记-整理算法在标记-清除算法的基础上做了改进 , 标记阶段将可回收的对象标记出来 , 标记完成后不是直接对可回收的对象进行清理 , 而是让所有存活的对象都向一端移动 , 在移动的过程中清理掉可回收的对象 。
优点:相比于标记清除法来说 , 标记整理法不会大量产生不连续内存碎片问题 。
缺点:如果是在对象存活率较高的情况下会执行较多的复制操作 , 效率将会降低很多 , 而在存活率较低的情况下 , 效率会大大提高 。

文章插图
2.2.4 分代收集回收算法当前商业虚拟机都是采用的是分代收集算法 , 根据对象存活的周期不同将内存划分为几块 , 一般是将java堆分为年轻代 , 老年代和永久代 。然后根据各个年代的特点来采取不同收集算法 , 年轻代存活率较低 , 采用复制回收算法 , 老年代对象存活率较高 , 采用标记清除法或者是标记整理法来进行回收 。

文章插图
3、内存问题表现形式3.1 内存抖动内存波动图呈锯齿状 , gc频繁导致卡顿 。

文章插图
3.2 内存泄漏内存泄露简单来说就是系统分配出去的内存由于某种原因导致没法释放 , 内存会越来越小 , 最终导致oom 。
3.3 内存溢出即OOM , OOM时会导致程序异常 。Android设备出厂以后 , java虚拟机对单个应用的最大内存分配就确定下来了 , 超出这个值就会OOM 。
4、内存优化常用工具4.1 Memory ProfilerMemory Profiler是Android studio自带的工具 , 实时图表形式展示应用内存使用的情况 , 可以用来识别内存泄露 , 抖动等
注意:如果在控制台中没有找到Profiler , 可View -----> Tool windows ---> Profiler 进行打开
优点:方便直观 , 便于线下使用
4.2 Memory Analyzer(MAT)1、强大的java heap分析工具 , 查找内存泄露及内存占用
2、生成整体报告 , 便于分析问题
3、可以在线下深入使用
MAT使用:
MAT下载地址:
推荐阅读
- 8 种用于前端性能分析工具
- 网站的服务器如果不稳定 会对优化造成什么影响?
- 万字详文:Java内存泄漏、性能优化、宕机死锁的N种姿势
- 喝什么茶能提高性能力,喝什么茶能软化血管呢
- 容器视角下的网络性能监控
- 苹果iOS14 Beta4版本公布,着重小部件的更新优化
- 干货!SQL性能优化,书写高质量SQL语句
- M.2接口SSD就是高性能存储的代名词?不同插槽代表不同速度
- SEO优化中如何对导航目录进行优化
- Android逆向反编译代码注入APK过程思路分析
