展开

关键词

Android内存优化-Bitmap内存优化

在日常开发中,我们不免会使用到Bitmap,而bitmap确实实在在的是内存使用的 “大户”,如何更好的使用 bitmap,减少其对 App内存的使用,是我们开发中不可回避的问题。 基础了解 我们先了解一下,Bitmap到底占用多大的内存。 Bitmap作为位图,需要读入一张图片每一个像素点的数据,其主要占用内存的地方也正是这些像素数据。 Bitmap 中,存在一个 枚举类 Config,定义了Android 中支持的 Bitmap配置。 例如:一张 1024—1024像素的图片,采用ARG8888 格式存储,那么内存大小1024x1024x4=4m.如果 inSampleSize=2,即采样后图片内存大小为 512x512X4=1m 效果如下: 参阅(非常感谢): Android校招指南。 简书-Android-Bitmap内存优化

12130

Android 优化——内存优化

Android 优化目录 ---- 优化的意义 减少 OOM,提高应用稳定性。 减少卡顿,提高应用流畅度。 减少内存占用,提高应用后台运行时的存活率。 减少异常发生,减少代码逻辑隐患。 leakcanary-android-no-op 中没有的 API。 refWatcher.watch(activity); } }); return refWatcher; } } } 内存优化 @IntDef,@StringDef 代替枚举 zipalign 优化 apk 节制使用 Service 如果需要使用 Service 来执行后台任务,一定要任务正在执行的时候才启动 Service 新申请 Bitmap 与旧的 Bitmap 必须有相同的解码格式,并且在 Android 4.4 之前,只能重用相同大小的 Bitmap 的内存区域,Android 4.4 后可以重用任何 bitmap

57410
  • 广告
    关闭

    腾讯云618采购季来袭!

    腾讯云618采购季:2核2G云服务器爆品秒杀低至18元!云产品首单0.8折起,企业用户购买域名1元起,还可一键领取6188元代金券,购后抽奖,iPhone、iPad等你拿!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    android内存优化

    虚拟机会频繁触发GC, 影响程序响应速度 3、内存占用大的程序容易被各种清理优化程序中止,用户也更倾向于卸载这些程序 Android应用的开发语言为Java,每个应用最大可使用的堆内存受到Android 系统的限制 Android每一个应用的堆内存大小有限       1、  通常的情况为16M-48M       2、  通过ActivityManager的getMemoryClass()来查询可用堆内存限制 没有的可以去http://www.eclipse.org/mat/downloads.php安装一下MAT 在Android 的调试环境DDMS下,找到Heap dump ? ? 例如View#setTag(int, Object)的内存泄漏https://code.google.com/p/android/issues/detail? 其他内存泄漏       1、Android DigitalClock引起的内存泄漏http://code.google.com/p/android/issues/detail?

    45690

    android内存优化

    Android的应用被限制为最多占用16m的内存,至少在T-Mobile G1上是这样的(当然现在已经有几百兆的内存可以用了——译者注)。它包括电话本身占用的和开发者可以使用的两部分。 即使你没有占用全部内存的打算,你也应该尽量少的使用内存,以免别的应用在运行的时候关闭你的应用。Android能在内存中保持的应用越多,用户在切换应用的时候就越快。 作为我的一项工作,我仔细研究了Android应用的内存泄露问题,大多数情况下它们是由同一个错误引起的,那就是对一个上下文(Context)保持了长时间的引用。     在一个合格的Android应用中,你通常能够用到两种上下文(Context):活动(Activity)和应用(Application)。 这样的结果就是Android会从资源中重新载入应用的UI。现在想象一下,你写了一个应用,有一个非常大的位图,并且你并不想在每次旋转时都重新载入。

    25670

    Android 内存优化杂谈

    作者:shwenzhang Android 内存优化是我们性能优化工作中比较重要的一环,这里其实主要包括两方面的工作: 优化RAM,即降低运行时内存。 本文的着重点为第一点,总结概述降低应用运行内存的技巧。在这里我们不再细述PSS、USS等概念与Android应用的内存管理,如对这部分内容感兴趣,可自行阅读文末的参考文章。 当前微信内存监控体系中也存在一些不尽人意的地方,在未来的日子里也同样需要努力去优化。 参考文章 [1].Android内存管理 [2].leakcanary [3].AndroidExcludedRefs [4].fresco [5].优化安卓应用内存的神秘方法以及背后的原理 [6].Android 性能优化内存篇 本文来源于:WeMobileDev 微信公众号

    1.7K10

    Android性能优化内存优化

    Tips:本篇是《深入探索Android内存优化》的基础篇,如果没有掌握Android内存优化的同学建议系统学习一遍。 众所周知,内存优化可以说是性能优化中最重要的优化点之一,可以说,如果你没有掌握系统的内存优化方案,就不能说你对Android的性能优化有过多的研究与探索。 本篇,笔者将带领大家一起来系统地学习Android中的内存优化。 注意 分配LruCache大小时应考虑应用剩余内存有多大。 4、图片内存优化Android默认情况下,当图片文件解码成位图时,会被处理成32bit/像素。 11、其它的内存优化注意事项 除了上面的一些内存优化点之外,这里还有一些内存优化的点我们需要注意,如下所示: 尽使用static final 优化成员变量。 使用增强型for循环语法。

    15630

    android计算bitmap内存内存优化

    则跳过这步) 新图的高度 = Sample高度 * (设备的 dpi / 目录对应的 dpi ) 新图的宽度 = Sample宽度 * (设备的 dpi / 目录对应的 dpi ) 3、 bitmap内存 options.inSampleSize = 4; options.inBitmap = mLastBitmap; //bitmap内存复用 ) + " AllocationByteCount : " + bitmap.getAllocationByteCount()); } bitmap.getByteCount() :bitmap使用内存的理论值 bitmap.getAllocationByteCount() :使用options.inBitmap时,bitmap实际使用的内存内存优化: 1、设置inSampleSize 2、不影响用户体验的情况下:Bitmap.Config.ARGB_4444 举例: 1、 2、

    2510

    Android性能优化系列之内存优化

    Android性能优化系列之布局优化,本篇博客,我将介绍内存优化的相关知识。 关于这个暂停的时间,Android在2.3的版本当中进行过一次优化,在2.3之前GC操作是不能并发进行的,也就是系统正在进行GC,那么应用程序就只能阻塞住等待GC结束。 而自2.3之后,GC操作改成了并发的方式进行,就是说GC的过程中不会影响到应用程序的正常运行,但是在GC操作的开始和结束的时候会短暂阻塞一段时间,不过优化到这种程度,用户已经是完全无法察觉到了。 内存泄漏的检测 说了那么多关于内存分配的知识,接下来我们就看看Android给我们提供了哪些工具来解决内存泄漏的问题 Allocation Tracker(Device Monitor) Allocation 好了,关于内存泄露的相关内容就介绍到这,关于一些可能导致内存泄漏的原因,可以参考我的另外一篇博客Android中常见的内存泄露

    7050

    Android 内存优化总结&实践

    Android开发发展到今天也是已经比较成熟,各种新框架,新技术也是层出不穷,而内存优化一直都是Android开发过程一个不可避免的话题。 恰好最近做了内存优化相关的工作,这里也对Android内存优化相关的知识做下总结。 本文将会对Android内存优化相关的知识进行总结以及最后案例分析(一二部分是理论知识总结,你也可以直接跳到第三部分看案例): 一、 Android内存分配回收机制 二 、Android常见内存问题和对应检测 三、 JOOX内存优化案例 四 、总结 工欲善其事必先利其器,想要优化App的内存占用,那么还是需要先了解Android系统的内存分配和回收机制。 上面介绍了Android系统内存分配和回收机制,同时也列举了常见的内存问题,但是当我们接到一个内存优化的任务时,我们应该从何开始?下面是一次内存优化的分享。 1. 首先是解决大部分内存泄露。

    1.3K70

    探索 Android 内存优化方法

    [1240] 前言 这篇文章的内容是我回顾和再学习 Android 内存优化的过程中整理出来的,整理的目的是让我自己对 Android 内存优化相关知识的认识更全面一些,分享的目的是希望大家也能从这些知识中得到一些启发 Android 应用运行在 Dalvik 虚拟机上,而 Dalvik 虚拟机是基于 JVM 优化而来的,因此只有了解了 Java 的内存管理机制,才能更好地理解 Android内存管理机制,如果你对这一块还不熟悉的话 本文的内容可分为两部分,第一部分讲的是 Android 内存管理机制相关的一些知识,第二部分讲的是内存问题的解决与内存优化方法,大家可以根据自己的需要选择性地阅读。 1. 为什么要做内存优化内存优化就是对内存问题的一个预防和解决,做内存优化能让应用挂得少、活得好和活得久。 导致 Android 应用 Crash 的原因有很多种,而做内存优化就能让我们的应用避免由内存问题引起的 Crash。

    42800

    Android 性能优化 & 内存

    Android内存分析方向: Java 内存分析 Java中的内存泄露主要特征:可达,无用 无用指的是创建了但是不再使用之后没有释放 能重用但是却创建了新的对象进行处理 Native 内存分析 堆中new com.i2finance.shexpress/files/paanydoor_resource_3.5.0.36.jar:/resources.arsc: 67K meminfo的信息中各字段都是什么含义, 要理解各字段含义,我们才好进行内存优化 使用Android Studio 打开Android Studio 的Android Monitor , 选中Memory 标签: ? 2.2 Debug Bitmap 图片一直是内存占用的一个大头,也是引起内存泄露,OOM的常客。所以对图片的分析是需要非常了解,这样才能更好的优化项目。 我们需要知道该图片是哪张图片,这样才能好优化相关的图片代码。 Bitmap类型 在mat中通常能够看到bitmap类型,占用了大量的内存,如下面这张图片,在内存中占用2M。

    42960

    探索 Android 内存优化方法

    1 前言 这篇文章的内容是我回顾和再学习 Android 内存优化的过程中整理出来的,整理的目的是让我自己对 Android 内存优化相关知识的认识更全面一些,分享的目的是希望大家也能从这些知识中得到一些启发 Android 应用运行在 Dalvik 虚拟机上,而 Dalvik 虚拟机是基于 JVM 优化而来的,因此只有了解了 Java 的内存管理机制,才能更好地理解 Android内存管理机制,如果你对这一块还不熟悉的话 https://juejin.im/post/5d3a870df265da1b855c9d41 本文的内容可分为两部分,第一部分讲的是 Android 内存管理机制相关的一些知识,第二部分讲的是内存问题的解决与内存优化方法 2 为什么要做内存优化内存优化就是对内存问题的一个预防和解决,做内存优化能让应用挂得少、活得好和活得久。 导致 Android 应用 Crash 的原因有很多种,而做内存优化就能让我们的应用避免由内存问题引起的 Crash。

    43640

    Android | App内存优化 之 JVM & Android内存管理机制

    ---- Android内存管理机制 内存(按需)弹性分配 分配值与最大值受具体设备影响; 不同配置的手机,其单个APP可以使用的内存是不同的; 比如多者有单个APP可以使用512M的内存的,少者128M , 一个APP只用了200M,再要申请一个几十M的内存时, 系统也抛出OOM内存溢出异常; Dalvik 和 ART的区别(关注点:程序运行时、GC算法) 参考链接: Android 5.0: Android ART Android 4.4之前,Android系统一直都是在Dalvik 虚拟机上的, 从Android 4.4开始开始引入ART,到5.0已经成为默认选择。 ART,Android Runtime 的简称。 优点: 通过在安装应用程序时,自动对程序进行代码预读取编译, 让程序直接编译成机器语言,运行时直接运行 无需再做转化,!!!! ---- 参考自 Android内存管理及优化 01 详析一次鹅厂一面 | 移动端开发岗题解 要点提炼| 理解JVM之内存管理机制 慕课网 java存储机制(栈、堆、方法区详解)

    76410

    Android性能优化(四)之内存优化实战

    在上一篇《Android性能优化(三)之内存管理》中我们对Android内存管理有了一定的认识,本篇文章从实际出发对内存进行优化,主要包含以下部分: 1. 一般用于追踪某项操作之后的内存分配,调整相关的方法调用来优化app性能与内存使用; D:剩余可用内存; E:已经使用的内存。 Out Of Memory 2.1 Android OOM Android系统的每个进程都有一个最大内存限制,如果申请的内存资源超过这个限制,系统就会抛出OOM错误。 5.2 使用优化过的集合 Android API当中提供了一些优化过后的数据集合工具类,如SparseArray,SparseBooleanArray,以及LongSparseArray等,使用这些API 参考: Android性能优化典范 Manage Your App’s Memory

    48430

    Android 优化Handler防止内存泄露

    Android 优化Handler防止内存泄露 Demo描述: Handler可能导致的内存泄露及其优化 1 关于常见的Handler的用法但是可能导致内存泄露 2 优化方式请参考BetterHandler 和BetterRunnable的实现 package cc.cc; import java.lang.ref.WeakReference; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; /** * Demo描述: * Handler 可能导致的内存泄露及其优化 * * 1 关于常见的Handler的用法但是可能导致内存泄露 * 请参考方法initHandler() * 2 优化方式请参考BetterHandler和BetterRunnable ,这样就可能会造成内存泄漏

    35330

    Android内存优化(五)详解内存分析工具MAT

    MAT,全称为Memory Analysis Tool,是对内存进行详细分析的工具,它是Eclipse的插件,如果用Android Studio进行开发则需要单独下载它,下载地址为:http://eclipse.org Android内存优化(三)避免可控的内存泄漏这篇文章。 2.2 DDMS生成hpof文件 生成hpof文件主要分为以下几个步骤: 在Android Studio中打开DDMS,运行程序。 生成hpof文件主要分为一下几个步骤: 在Android Monitor中选择要分析的应用程序进程。 进行可能发生内存问题的操作(本文的例子就是不断的切换横竖屏)。 SELECT * FROM [ INSTANCEOF ] <class_name> [ WHERE <filter-expression>] 当我们输入select * from instanceof android.app.Activity

    1.1K80

    Android | App内存优化内存抖动解决实战

    内存碎片即内存不连续,有 内存空洞, 某两个正在使用的内存中间有一个间隔, 这个间隔虽然也被算在可用内存里面, 但实际上,因为它过小, 当我们申请内存的时候,经常是需要申请一定量的连续内存, > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width=" match_parent" android:layout_height="match_parent"> <Button android:id="@+id/bt_memory " android:layout_width="wrap_content" android:layout_height="wrap_content" android 参考文章: Android性能优化之CPU Profiler 运行程序以及MP工具, 使用Record按钮开始记录某一段CPU执行的时间, 接着点击Stop停止对这段时间记录; (上述Record

    1.2K10

    Android内存优化(三)避免可控的内存泄漏

    前言 内存泄漏向来都是内存优化的重点,它如同幽灵一般存于我们的应用当中,有时它不会现身,但一旦现身就会让你头疼不已。 1.什么是内存泄漏 我们知道,每个应用程序都需要内存来完成工作,为了确保Android系统的每个应用都有足够的内存Android系统需要有效地管理内存分配。 当内存不足时,Android运行时就会触发GC,GC采用的垃圾标记算法为根搜索算法,如下图所示。 ? 从上图看以看出,Obj4是可达的对象,表示它正被引用,因此不会标记为可回收的对象。 内存泄漏产生的原因,主要分为三大类: 1.由开发人员自己编码造成的泄漏。 2.第三方框架造成的泄漏。 3.由Android 系统或者第三方ROM造成的泄漏。 2.6 WebView 不同的Android版本的WebView会有差异,加上不同厂商的定制ROM的WebView的差异,这就导致WebView存在着很大的兼容性问题。

    304100

    你想要的Android性能优化系列:内存优化

    本篇来自我的同事 梅贤斌 的投稿,分享了内存优化的知识,也是在我们项目组内进行技术分享的原稿。 一、类加载机制1. ClassLoader的类型2. 分代收集算法五、Android 虚拟机1. Android使用的虚拟机2. 引起GC的原因3.垃圾收集六、常见的内存问题七、常见的内存泄漏场景 在Android系统中,系统为每个App分配的内存都是有限的,如果不合理的使用,就有可能造成一系列的内存问题,如:内存泄漏,内存溢出和内存抖动 所以对App内存的治理,就显得尤为重要。要想很好的解决App的内存问题,就需要先弄懂Android内存管理机制,知其然知其所以然,明白原理之后,在结合相关的工具,去定位并解决问题。 512M 模拟器 Android 6.0 192M 512M 一、类加载机制 在介绍Java运行时内存之前,先来看看类是如何被加载到内存中来的。

    60830

    相关产品

    • 腾讯客户端性能分析

      腾讯客户端性能分析

      腾讯客户端性能分析(QAPM)是腾讯云研发的一款面向移动APP的应用综合性能管理平台,简单易用,提供贯穿研发流程内外的性能监控服务,打造发现、定位、解决、度量的一站式性能优化体验......

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券