`
liu86th
  • 浏览: 117967 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

[转]技巧和设计模式 --- 内存分配

 
阅读更多

1.不要创建 Java 对象

 

在性能敏感的代码里, 尽量避免创建 Java 对象,例如:

 

[1] 测量 onMeasure()

 

[2] 布局 onLayout()

 

[3] 绘图 dispatchDraw(), onDraw()

 

[4] 事件处理  dispatchTouchEvent(), onTouchEvent()

 

[5] Adapter getView(), bindView()

 

2.GC, 垃圾回收

 

 [1] 整个程序暂停

 

 [2] 慢(大约几百个毫秒)

 

3.强行限制 (适用于调试模式)

 

 

int prevLimit = -1;
try {
prevLimit = Debug.setAllocationLimit(0);
// 执行不分配内存的代码
} catch (dalvik.system.AllocationLimitError e) {
// 如果代码分配内存, Java 虚拟机会抛出错误
Log.e(LOGTAG, e);
} finally {
Debug.setAllocationLimit(prevLimit);
}
 

 

4.管理好对象

 

 

[1] 使用软引用 内存缓存的最佳选择

 

 

[2] 使用弱引用 避免内存泄露

 

5.内存缓存实例

 

 

private final HashMap<String, SoftReference<T>> mCache;
     public void put(String key, T value) {
     mCache.put(key, new SoftReference<T>(value));
    }

    public T get(String key, ValueBuilder builder) {
    T value = null;
    SoftReferece<T> reference = mCache.get(key);
    if (reference != null) {
        value = reference.get();
    }
    if (value == null) {
        value = builder.build(key);
        mCache.put(key, new SoftReference<T>(value));
    }
    return value;
}
 

 

 

分享到:
评论

相关推荐

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    设计模式不仅是编程中的一种技巧,更是对软件设计思想的体现。通过学习和掌握GoF的23种设计模式,可以显著提高程序员的编码水平,使得开发出的软件系统更加健壮、可扩展、易维护。以上每种模式都有其特定的应用场景...

    操作系统课程设计动态内存分配算法

    通过这个课程设计项目,你将深入理解操作系统如何管理内存,学习如何实现动态内存分配算法,并掌握优化内存使用和减少碎片的技巧。同时,可视化和交互式操作也能提高你分析和解决问题的能力。通过20062758操作系统...

    C嵌入式编程设计模式

    而“C嵌入式编程设计模式”这一主题,旨在探讨如何利用C语言进行高效且可靠的嵌入式系统编程,通过采用经典的设计模式来提升代码的可读性、可维护性和可扩展性。以下将详细阐述相关知识点。 1. **状态机**:状态机...

    keil c51使用技巧及实战--中文版.rar

    - ROM与RAM操作:介绍如何在程序中动态分配和释放内存。 9. **调试技巧** - UVision IDE使用:详述Keil的集成开发环境UVision的功能,包括源代码编辑、编译、链接、调试等操作。 - 调试工具:介绍如何使用仿真器...

    存储管理系统设计----操作系统课程设计源代码(Java编写)

    - **对象池设计模式**:为了提高效率,可能会使用内存池预先分配一部分内存,避免频繁的动态分配和释放。 8. **异常处理**: - **内存溢出与内存泄漏**:在存储管理中,可能会遇到这些问题,项目可能包含相应的...

    嵌入式c语言程序设计--使用mcs-51

    C语言的静态、动态和堆栈内存分配方式需要根据系统资源和程序需求来选择。 最后,调试技巧是不可或缺的。虽然MCS-51可能没有现代微控制器那样的调试工具,但我们可以使用模拟器、串口监视器或者简单的LED灯来调试...

    嵌入式编程技巧embedded-programming-skills-develop.zip

    学会有效地分配和释放内存,避免内存泄漏,并考虑存储器的大小和速度差异,例如使用堆栈和静态内存分配。 编程技巧三:低级编程。在嵌入式系统中,常常需要编写驱动程序来与硬件设备交互。这涉及I/O端口操作、中断...

    Java零基础-对象的创建和使用-内存分析.md

    3. **学习设计模式**:了解并实践常用的设计模式,如单例模式、工厂模式等,这些模式可以帮助解决常见的软件设计问题。 4. **参与社区讨论**:加入Java相关的论坛或社区,与其他开发者交流学习经验和技巧。 通过...

    Delphi开发经验技巧宝典光盘源码

    - **0047**:动态内存分配与释放。 - **0048**:指针与数组之间的转换技巧。 - **0049**:默认构造器与析构器的理解与使用。 - **2.4**:组件与控件。 - **0050**:自定义组件的创建。 - **0051**:复合控件的...

    时间触发嵌入式系统设计模式源码

    这可能涉及到静态和动态内存分配策略的选取。 7. **电源管理**:在某些低功耗应用中,还需要考虑电源管理策略,如休眠模式和唤醒机制,以节省能源。 8. **软件工程实践**:由于代码需要严格遵循预定义的时间表,...

    VC内存泄露检查 VC内存泄露检查 VC内存泄露检查

    - 使用RAII(Resource Acquisition Is Initialization)设计模式,将资源管理与对象生命周期绑定。 8. **内存泄漏的调试技巧** - 使用Visual Studio的调试器查看内存堆状态。 - 分析内存泄露报告,定位泄露的...

    java设计模式与经验总结

    Java设计模式是软件工程中的一种最佳实践,它们是解决常见编程问题的经验总结,可以提高代码的可重用性、可维护性和可扩展性。在Java领域,熟练掌握设计模式是成为一个高级开发者的必要条件。本资源包含两部分:Java...

    设计模式精解 模式 解析

    通过对这些设计模式的学习和实践,不仅可以提升编程技巧,还能更好地应对软件开发中的挑战。以上介绍了GoF四人组提出的23种经典设计模式的基本概念及其应用场景,每一种模式都有其独特的用途和适用范围。理解和掌握...

    设计模式全部演示代码

    设计模式是软件工程中的一种最佳实践,用于解决在开发过程中经常遇到的问题,提供了一套可重用的解决方案。这些模式都是经验丰富的...学习设计模式不仅有助于提高编程技巧,还能帮助你编写出更加优雅、易于维护的代码。

    dotNET 设计规范--.NET约定、惯用法与模式.rar

    规范会给出一些优化代码的技巧和注意事项,例如避免不必要的内存分配和减少数据库查询。 通过学习和遵循这些设计规范,开发者可以写出更专业、更高效的.NET代码,从而提升整个项目的质量和效率。这份文档是.NET...

    Linux-operator-new-delete.rar_Operator Down_VC debug技巧_内存泄漏

    在 windows 下使用 VC 编程时,我们通常需要 DEBUG 模式下运行程序,而后调试器将在退出程序时,打印出程序运行过程中在堆上分配而没有释放的内存信息,其中包括代码文件名、行号以及内存大小。该功能是 MFC ...

    WinCE-Memory-Management-.rar_memory_wince

    - **静态内存分配**:WinCE提供了静态内存分配器(Kernel Heap),用于为内核组件和服务分配内存。这些内存一旦分配,在整个系统运行期间不会释放。 - **动态内存分配**:动态内存由进程堆管理,适用于应用程序的...

    《Visual C# 2005编程技巧大全》-罗斌-源代码N

    7. **设计模式**:设计模式是软件开发的最佳实践,书中的源代码可能涵盖了常见的设计模式,如工厂模式、单例模式、观察者模式等,帮助读者提高代码的可维护性和可扩展性。 通过《Visual C# 2005编程技巧大全》及...

Global site tag (gtag.js) - Google Analytics