![](https://img-blog.csdnimg.cn/20210722094824376.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
内存优化
文章平均质量分 73
内存优化
yaoming168
这个作者很懒,什么都没留下…
展开
-
Linux内存管理--基础知识
Linux内存管理--基础知识原创 2023-06-17 05:37:26 · 514 阅读 · 0 评论 -
Linux内存管理--物理内存与虚拟内存
Linux内存管理--物理内存与虚拟内存原创 2023-06-17 05:33:59 · 623 阅读 · 0 评论 -
Android内存优化汇总
内存优化18条总结1.使用保守的Service实现模块内具体功能时,尽量避免以应用内常驻后台的Service方式实现。如果应用需要使用 service在后台执行业务功能, 除非是一直在进行活动的工作,否则不要让它一直保持在后台运行。并且, 当你的 service 执行完成但是停止失败时要小心 service 导致的内存泄露问题。当启动 ...原创 2019-04-01 15:48:44 · 245 阅读 · 0 评论 -
Android内存优化-方式十四:使用弱引用防止内存泄露
这个根本原因就是:Activity在被结束之后,MessageQueue并不会随之被结束,如果这个消息队列中存在msg,则导致持有handler的引用,但是又由于Activity被结束了,msg无法被处理,从而导致永久持有handler对象,handler永久持有Activity对象,于是发生内存泄漏。但是为什么为static类型就会解决这个问题呢?因为在java中所有非静态的对象都会持有当...原创 2019-04-01 15:10:46 · 689 阅读 · 0 评论 -
Android内存优化-方式十三:避免创建不必要的对象
字符串拼接优先使用StringBuilder,若要求线程安全则使用StringBuffer耗时情况如何?字符串拼接优先使用StringBuilder,若要求线程安全则使用StringBuffer耗时情况如何?String、StringBuffer、StringBuilder的区别与效率比较String 是不可变的,StringBuffer、StringBuilder是可变的Stri...原创 2019-04-01 15:23:44 · 207 阅读 · 0 评论 -
Android内存优化- 方式十二: Animator的使用与释放(Android 内存泄漏)
Android 内存泄漏 - Animator的使用与释放在属性动画中如果定义为无限循环,如果在Activity中播放这类动画并且在其退出(生命周期结果前)未停止动画,造成内存泄漏。举例说明假设有如下无限循环动画:public class LeakActivity extends AppCompatActivity { private TextView textView; ...原创 2019-04-01 15:28:35 · 1337 阅读 · 0 评论 -
Android内存优化-方式十二:避免线程导致内存泄露
避免线程导致内存泄露在做Android开发过程中最长遇到的一个难点就是在Activity的生命周期中执行长时间任务而导致的不可避免的内存泄露。看看下面的代码,有一个Activity在创建的时候会启动一个线程,并且循环执行任务。当一个配置改变时,会导致整个Activity被销毁及重新创建,我们总会简单的认为Android系统会在这之后清理并回收与Activity有关的内存和正在运行的线程。然而...原创 2019-04-01 15:30:54 · 2632 阅读 · 1 评论 -
Android内存优化-方式十一:避免Handler导致的内存泄露
它默认是可以使用外部类的成员变量的,这样也佐证了我们所说的它会隐式的持有外部类的引用;这时候如果子线程使用handler将message消息发送到messageQueue中并等待执行的过程过长(具体异步消息相关的内容可以查看:http://blog.csdn.net/qq_23547831/article/details/41697039),这时候activity已经执行finish方法;...原创 2019-04-01 14:11:57 · 314 阅读 · 0 评论 -
Android内存优化-方式十:ListView复用
1.ListView的复用机制描述:以构造ListView的BaseAdapter为例,在BaseAdapter中提供了方法:public View getView(int position, ViewconvertView, ViewGroup parent)来向ListView提供每一个item所需要的view对象。初始时ListView会从BaseAdapter中根据当前的屏幕布局实例...原创 2019-04-01 14:10:08 · 411 阅读 · 0 评论 -
Android内存优化-方式九:使用优化过的集合
SparseArray是Android framework中提供的轻量级的键值对数据结构,我们知道空间和效率从来都是相悖的,SparseArray的实现正是以时间来换取空间效率,适合小规模数据的存储。下面来了解下SparseArray的特点,使用,并分析部分源码。SparseArray特点SparseArray以键值对的形式保存数据,key是int类型,并且是唯一的不允许重复的key,而va...原创 2019-04-01 14:08:36 · 354 阅读 · 0 评论 -
Android内存优化-方式八:使用的资源对象要及时关闭 Cursor
资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们,以便它们的缓冲及时回收内存。它们的缓冲不仅存在于java虚拟机内,还存在于java虚拟机外。如果我们仅仅是把它的引用设置为null,而不关闭它们,往往会造成内存泄漏。因为有些资源性对象,比如SQLiteCursor(在析构函数finalize(),如果我们没有关闭它,它自己会调close()关闭...原创 2019-04-01 14:05:35 · 604 阅读 · 0 评论 -
Android内存优化-方式七:注册的监听对象要及时进行注销
在一个activity中的生命周期中,如果在onCreate()中注册了广播接收者,那么在onDestroy()中注销,这个是没有问题的,相信大家一般都会这么做。但是如果在onStart()中注册的呢?还能在onDestroy()中注销吗?答案是否定的,如果在app中按了home键,就看不到app界面了,再进入app的时候会再次注册,但前一次还没有注销,所以要在onStop()中注销才是可行的。...原创 2019-04-01 14:03:10 · 411 阅读 · 0 评论 -
Android内存优化-方式六:当界面变为隐藏状态后释放内存
Activity的onTrimMemory()方法当界面不可见时释放内存当用户打开了另外一个程序,我们的程序界面已经不再可见的时候,我们应当将所有和界面相关的资源进行释放。在这种场景下释放资源可以让系统缓存后台进程的能力显著增加,因此也会让用户体验变得更好。那么我们如何才能知道程序界面是不是已经不可见了呢?其实很简单,只需要在Activity中重写onTrimMemory()方法,然后在这个...原创 2019-04-01 14:00:20 · 670 阅读 · 0 评论 -
Android内存优化-方式五:Bitmap类的对象要及时主动释放
Bitmap类的对象要及时主动释放1.若是成员函数中的临时变量,已经没用的 bitmap 对象要及时调用 recycle() 释放,例如: mBitWallPaper.recycle(); mBitWallPaper = null; System.gc();2.Activity中的全局Bitmap对象,需要在onDestroy()中明确释放。3若执行了ImageView.setImageBi...原创 2019-04-01 13:57:32 · 2819 阅读 · 0 评论 -
Android内存优化-方式一:使用保守的Service
1、 简介IntentService是Service的子类,根据需要处理异步请求(以intent表示)。客户端通过调用startService(Intent) 发送请求,该Service根据需要启动,使用工作线程处理依次每个Intent,并在停止工作时停止自身。这种“工作队列处理器”模式通常用于从应用程序的主线程中卸载任务。 IntentService类的存在是为了简化这种模式。 要使用它,扩...原创 2019-04-01 13:40:13 · 330 阅读 · 0 评论 -
Android内存优化-方式四:谨慎使用SingleInstance模式
Android的单例模式在我们项目开发中经常会用到,不过使用的不恰当的话也会造成内存泄漏。因为单例的静态特性使得单例的生命周期和应用的生命周期一样长, 这就说明了如果一个对象已经不需要使用了,而单例对象还持有该对象的引用,那么这个对象将不能被正常回收,这就导致了内存泄漏。我们来分析一下,为什么会内存泄漏呢?AppManager appManager=AppManager.getInstanc...原创 2019-04-01 13:56:13 · 685 阅读 · 0 评论 -
Android内存优化-方式三:函数需要传递Context参数时,避免直接传递Activity
Android上 ,Context可以用于很多操作,但是大部分时候是用来加载以及使用资源。这就是为什么所有的widgets在他们的构造函数中接受一个Context参数。在一般的android应用中,通常有两种Context:分别是Activity和Application。通常的,当咱们的类和方法需要使用到context时,咱们传递的是Activity这个context:当某些View/方法需要C...原创 2019-04-01 13:50:57 · 677 阅读 · 0 评论 -
Android内存优化-方式二:避免静态对象对Activity或Service的引用
把Activity作为Context直接传给静态对象,单例模式不正确的获取contextpublic class LoginManager { private Context context; private static LoginManager manager; public static LoginManager getInstance(Context conte...原创 2019-04-01 13:48:35 · 580 阅读 · 0 评论