本来以为公司的项目没有过多的图片处理,也涉及不到什么缓存处理,内存这一部分不是很重要直到有一天UI给我们开发一张高清背景图也没想过要处理结果导致内存平白无故增加了3,4十兆,随之而来的就是程序的各种崩溃各种OOM。
好了背景我就不多说了接下来我们说说内存优化的service优化。

1.首先让我们做个试验启动一个Activity没任何逻辑处理内存显示如下。

大家可以看到内存占有维持在1M左右,可以说相当的小。

2.接下来让我们启动个service并在里面做一些增加内存的处理。

//做耗内存操作
public int onStartCommand(Intent intent, int flags, int startId) {String aa = "sssssssqwezxczxczxczxc";StringBuffer sb = new StringBuffer();for (int i = 0; i < 100000; i++) {sb.append(aa);}Log.e("wwwwwwwwwwwwww", sb.toString());return super.onStartCommand(intent, flags, startId);}

下面是注册service的代码(很简单只有service的声明)

 <service android:name=".TestService"/>

这时候再看看内存使用情况

内存升到了16M对于突然增加的这15M左右的内存对手机来说是个很大的数字了。

3.接下来我们做个处理(在service定义时添加一个属性android:process=”:RequestService”)
:RequestService可以自己定义名字气什么名字无所谓重要的是要有个冒号。

 <service android:name=".TestService" android:process=":RequestService"/>

这时我们再看看内存的使用情况截图如下

内存又降到了之前的1M左右查看正在运行的应用可以看到我们的service依然正常运行
那android:process什么意思呢?
查了一些资料以及官方文档说明 android:process代表给这个service分配个单独的进程每个应用都有一个独立的进程当我们不设置这个属性的时候代表他要跟我们的应用共用一个进程这样的话我们的应用内存会被service占去一部分如果我们的service做太多耗内存的操作的话我们的程序很有可能会OOM,最恶心的是你还以为是你的出现OOM的界面问题导致查找半天不知道根源。

最后再补充一点如果我们设置了android:process属性后还需要再设置个属性 android:exported=”true”代表可以让我们的service能跟主进程进程间通信。

内存优化-service优化相关推荐

  1. 应用内存onLowMemory onTrimMemory优化

    1.应用内存onLowMemory& onTrimMemory优化 onLowMemory& onTrimMemory简介: OnLowMemory是Android提供的API,在系统 ...

  2. Android 内存管理之优化建议

    OOM(OutOfMemory)转:http://hukai.me/android-performance-oom/ 前面我们提到过使用getMemoryClass()的方法可以得到Dalvik He ...

  3. 来点干货 | Android 常见内存泄漏与优化(二)

    作者 | 无名之辈FTER 责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 在昨天的Android 内存泄漏问题多多,怎么优化?一文中,我们详细阐述了Java虚拟机工作原理和Androi ...

  4. App优化以及内存泄漏溢出优化

    目录介绍 1.OOM和崩溃优化 1.1 OOM优化 1.2 ANR优化 1.3 Crash优化 2.内存泄漏优化 2.0 动画资源未释放 2.1 错误使用单利 2.2 错误使用静态变量 2.3 han ...

  5. Android性能优化(2):常见内存泄漏与优化(二)

    文章目录 1. Android虚拟机:Dalvik和ART 1.1 JVM与Dalvik区别 1.2 Dalvik与ART区别 1.3 Dalvik/ART的启动流程 2. 常见内存分析工具 2.1 ...

  6. Android面试汇总-Android内存和性能优化面试

    一.app优化 app优化:(工具:Hierarchy Viewer 分析布局 工具:TraceView 测试分析耗时的) App启动优化 布局优化 响应优化 内存优化 电池使用优化 网络优化 App ...

  7. Android性能优化:手把手教你如何让App更快、更稳、更省(含内存、布局优化等)...

    2019独角兽企业重金招聘Python工程师标准>>> 前言 在 Android开发中,性能优化策略十分重要 因为其决定了应用程序的开发质量:可用性.流畅性.稳定性等,是提高用户留存 ...

  8. 关于mysql内存管理_MYSQL内存管理及优化

    MYSQL内存管理及优化 内存是影响数据库性能的主要资源,也是mysql性能优化的一个重要方面: 内存优化的原则 将尽量多的内存分配给mysql做缓存,但是要给操作系统和其他程序的运行预留足够的内存, ...

  9. 【Linux 内核 内存管理】优化内存屏障 ③ ( 编译器屏障 | 禁止 / 开启内核抢占 与 方法保护临界区 | preempt_disable 禁止内核抢占源码 | 开启内核抢占源码 )

    文章目录 一.禁止 / 开启内核抢占 与 方法保护临界区 二.编译器优化屏障 三.preempt_disable 禁止内核抢占 源码 四.preempt_enable 开启内核抢占 源码 一.禁止 / ...

  10. 【Linux 内核 内存管理】优化内存屏障 ② ( 内存屏障 | 编译器屏障 | 处理器内存屏障 | 内存映射 I/O 写屏障 )

    文章目录 一.内存屏障 二.编译器屏障 三.处理器内存屏障 一.内存屏障 内存屏障 , 又称为 " 屏障指令 " , 用于保证 " 编译器 " 或 " ...

最新文章

  1. LLVM基础技术图例
  2. python数据分析神器_牛逼啊!一个随时随地写Python代码的神器
  3. 实战SSM_O2O商铺_13【商铺注册】View层之初始化页面数据
  4. 解决Ubuntu“下载额外数据文件失败 ttf-mscorefonts-installer”的问题 (转载)
  5. Qt消息机制和事件概述(一)
  6. codesys中打开linux端的串口_CODESYS版本3.5 SP14 Patch 3发布
  7. 多元线性回归dw值_SPSS教程10:多元线性回归
  8. Flutter TextField 限制只允许输入数字,字母,小数,设置限制小数位数
  9. LoadRunner教程(12)-LoadRunner IP欺骗
  10. 计算机基础和办公软件应用第23集,计算机基础及Office办公软件应用(Windows7+0ffice 2010版)...
  11. 如何区分电梯卡为id卡ic卡_如何分辨IC卡和ID卡
  12. 电脑预装Office2016打开Word时点击保存弹出“word无法启动转换器RECOVR32.CNV”对话框问题的修复方法
  13. win10系统一键安装教程
  14. 用PS制作公路上的逼真文字
  15. 计算机视觉算法——基于Transformer的目标检测(DETR / Deformable DETR / DETR 3D)
  16. Linux查看硬盘信息方法总结
  17. (三)基于Multisim的超外差接收系统:中频放大器的设计
  18. 加载插件运行Burpsuite***测试套件
  19. 智能多媒体会议室实施方案分析
  20. 数据质量之评估维度及检测项

热门文章

  1. 简单获取apk的签名及shal码
  2. php7中shal(),十个你需要在 PHP 7 中避免的坑
  3. 科技狂人埃隆·马斯克
  4. centos系统安装杀毒软件clamav
  5. 3、特征选择(filter):线性相关性的F检验
  6. admin后台管理系统
  7. 股市华为鸿蒙是什么意思,4月华为鸿蒙概念股市回顾数据(干货满满)
  8. 今日头条推荐算法原理首公开,头条首席算法架构师带来详细解读
  9. 求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
  10. java面向对象数组实现家庭收支记账软件_golang实战--家庭收支记账软件(面向过程)...