美文网首页程序员
在 Andorid 中为什么要避免「内存抖动」?

在 Andorid 中为什么要避免「内存抖动」?

作者: 夏洛克的喵 | 来源:发表于2020-05-13 15:35 被阅读0次

内存抖动是指内存频繁的分配和回收,占用内存忽高忽低,内存占用图形上呈现锯齿状
在 Android 开发过程中,你一定听说过「内存抖动」这个词,别人肯定也告诫过你要避免内存抖动,但是为什么呢?

但是其实初步想,为什么要避免内存抖动呢?频繁创建对象,被 Java 虚拟机的回收机制自动回收了,这不是挺好的吗?开发者为什么还需要关心这个问题呢?

下面讲一下原因

1.频繁 GC 会导致卡顿
在传统的 GC 模式下,当虚拟机触发一次 GC,会先暂停所有线程。当频繁的 GC 这样 Android 主线程会被频繁的暂停,势必会引发卡顿。

2.GC 会导致内存碎片化
在传统的 GC 模式下,回收一次后,会导致内存碎片化,即导致很多内存块不连续,导致寻址变慢拖慢程序。极端情况,内存碎片化严重,这也导致无法为新的对象申请一块连续的内存,极大降低对内存的利用率,而这又反过来提高了 GC 的概率。

Google 为了缓解上面的问题,引入了 ART 虚拟机。但是也不能完全避免上述问题。所以开发者一定还是要考虑「内存抖动」的情况,优化自己的代码。

相关文章

  • 在 Andorid 中为什么要避免「内存抖动」?

    内存抖动是指内存频繁的分配和回收,占用内存忽高忽低,内存占用图形上呈现锯齿状在 Android 开发过程中,你一定...

  • 性能优化<第五篇>:内存优化

    1、为什么要内存优化? 2、了解内存中的内容 3、内存上限 4、GC内存回收机制 5、内存泄漏、内存抖动、内存溢出...

  • Android 性能优化笔记

    内存 目的: 无内存泄漏, 降低内存开销, 避免内存抖动; 减少非并发GC的运行次数 工具: LeakCanary...

  • Android内存抖动——检测、常见场景、处理

    内存抖动 介绍:内存抖动是Android性能优化中内存优化的一种情况,主要是由于频繁的对象创建导致内存抖动,最终可...

  • android 内存泄漏分析与优化(二)

    内存抖动、内存溢出、内存泄漏 内存抖动在极短的时间内,分配大量的内存,然后又释放它,这种现象就会造成内存抖动。典型...

  • Android 性能优化-内存抖动

    本文将了解内存抖动是什么以及内存抖动发生的原因及常见解决办法 内存抖动是什么 内存抖动:内存抖动实际上就是内存频繁...

  • 内存优化——内存抖动

    内存抖动是指内存频繁地分配和回收,而频繁的gc会导致卡顿,严重时和内存泄漏一样会导致OOM。内存抖动为什么会造成O...

  • 「性能优化4.1」内存优化的三个方面及工具

    内存优化的三个方面 APP 内存优化一般从 内存抖动,内存泄露,内存溢出这三个方面进行分析。 内存抖动 内存抖动是...

  • 内存抖动

    造成内存抖动的原因。 频繁大量的创建对象,造成虚拟机频繁触发GC。 内存抖动有什么后果。 1.程序卡顿;2.可能回...

  • 内存抖动

    内存抖动是由于短时间内有大量对象进出Young Generiation区导致的,它伴随着频繁的GC 不同的分代都有...

网友评论

    本文标题:在 Andorid 中为什么要避免「内存抖动」?

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