• Androidi性能优化之高效使用内存


    应用生存期的绝大多数时间都在用于处理内存中的数据

    性能主要取决于以下三个因素:

      a:CPU如何操作特定的数据类型

      b: 数据和指令需要占用多少存储空间

      c: 数据在内存中的布局

    访问内存:

      因为访问内存会产生一些开销,CPU会把最近访问的内存内容缓存起来,无论是内存读还是内存写,事实上,CPU通常使用两级缓存:

      a:一级缓存(L1)

      b:二级缓存(L2)

      有些处理器可能还有3级缓存

    垃圾回收:

      Java的一个非常重要的优点是垃圾收集,有两件非常重要的事情值得注意:

      a:还是有可能存在内存泄露

      b:垃圾回收器会帮你管理内存,它做的不仅仅是释放不用的内存。

    内存泄露分析工具:

      a:DDMS视图:Heap以及Allocation Tracker 跟踪内存使用和分配情况

      b:Eclipse内存分析器:MAT ,地址www.eclipse.org/mat

      c:Android 2.3定义的StrictMode类,对检测潜在的内存泄露有很大帮助。

    引用:

      Java定义了4中类型的引用:

      a:强(Strong)

      b:软(Soft)

      c:弱(Weak)

      d:虚(Phantom)

      软引用和弱引用在本质上是相似的,它们没有强到足以保持对象不被删除(或回收)的引用。不同之处在于回收时,垃圾回收器处理它们的引用的对象的积极程度不同。

      对象是软可及的,即存在一个软引用,但没有强引用,当有足够的内存保留对象时,垃圾回收器不会回收它。不过如果垃圾会收器决定需要回收更多的内存,那么它可任意回收软可及对象的内存,这种引用类型适用于缓存,它可以自动删除缓存中的条目。

    提示:当使用缓存时,确保你了解它使用的是什么类型的引用,例如Android的LruCache使用强引用。

      若可及对象,也就是说,存在一个弱引用,但没有强或软引用,下次垃圾回收时基本会被收走,换而言之,垃圾回收器更加积极地回收弱可及对象的内存。这种类型的引用适用于映射,这种映射可以自动删除不再被引用的键,WeakHashMap类就是这么做的。

      虚引用最弱,几乎很少用到。

  • 相关阅读:
    动态网页技术--JSP(5)
    动态网页技术--JSP(4)
    动态网页技术--JSP(3)
    动态网页技术--JSP(2)
    动态网页技术--JSP(1)
    动态网页技术--Servlet
    TomCat服务器搭建
    06_多线程
    05_进程间通信 IPC
    04_进程池
  • 原文地址:https://www.cnblogs.com/0616--ataozhijia/p/3649427.html
Copyright © 2020-2023  润新知