• Android异常与性能优化相关面试问题-内存管理面试问题详解


    内存管理机制概述:

    • 分配机制:操作系统会为每一个进程分配一个合理的内存大小,从而保证每一个进程能够正常的运行,不至于内存不够使用,或者某个进程占用过多的内存。
    • 回收机制:在系统内存不足的时候,系统有一个合理再分配资源的一个机制,从而保证新的进程能够正常运行,回收的时候就要杀死那些正在占用内存的进程,而Android系统也有一套自己的回收机制。

    Android内存管理机制: 

    • 分配机制:Android在为每个进程分配内存的时候采用了弹性的分配方式,一开始不会为APP分配太多的内存,而是开始只是分配一个小额的量,而这个量是根据手机物理内存的量而动态调整的,随着APP不断的运行当发现内存不够用了则android会为其分配一个额外的内存大小,但是这个额外的内存大小不是随意分配的,是有大小限制的,而Android的最大限度就是让更多的进程存活的内存当中,这样的话当用户再一次启动该APP进程时不需要重新创建进程,这时只要恢复已有的进程就可以了,减少APP启动的时间提高了用户体验。
    • 回收机制:由于Android是尽可能的让进程都存活以提高用户体验,当内存不足的时候,则会按一定的规则去杀掉APP以释放内存,则会按进程的优先级进来回收。

    内存管理机制的特点:

    • 更少的占用内存。
    • 在合适的时候,合理的释放系统资源,并非内存越少APP越好,因为内存抖动也会影响APP性能。
    • 在系统内存紧张的情况下,能释放掉大部分不重要的资源,来为Android系统提供可用的内存。
    • 能够很合理的在特殊生命周期中,保存或者还原重要数据,以至于系统能够正确的重新恢复该应用。

    内存优化方法:

    • 当Service完成任务后,尽量停止它,可以采用IntentService。
    • 在UI不可见的时候,释放掉一些只有UI使用的资源。
    • 在系统内存紧张的时候,尽可能多的释放掉一些非重要资源。
    • 避免滥用BitMap导致的内存浪费。
    • 使用针对内存优化过的数据容器。
    • 避免使用依赖注入的框架。
    • 使用ZIP对齐的APK。IDE已经集成了
    • 使用多进程。

    内存溢出 vs 内存泄漏:

    内存溢出会出现OOM异常,而内存泄漏不一定会抛异常,但是它是造成OOM的主要原因。

  • 相关阅读:
    tomcat部署项目时 报错Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules
    异常:Caused by: java.lang.NoClassDefFoundError: org/springframework/web/context/WebApplicationContext
    java安全管理器SecurityManager介绍
    Mybatis框架基础支持层——反射工具箱之Reflector&ReflectorFactory(3)
    Mybatis框架基础支持层——解析器模块(2)
    Mybatis框架可视化(1)
    JDK动态代理简单使用(2)
    代理(1)
    动态代理源码分析(3)
    springboot(十七)-使用Docker部署springboot项目
  • 原文地址:https://www.cnblogs.com/webor2006/p/8988923.html
Copyright © 2020-2023  润新知