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种设计模式,可以显著提高程序员的编码水平,使得开发出的软件系统更加健壮、可扩展、易维护。以上每种模式都有其特定的应用场景...
通过这个课程设计项目,你将深入理解操作系统如何管理内存,学习如何实现动态内存分配算法,并掌握优化内存使用和减少碎片的技巧。同时,可视化和交互式操作也能提高你分析和解决问题的能力。通过20062758操作系统...
而“C嵌入式编程设计模式”这一主题,旨在探讨如何利用C语言进行高效且可靠的嵌入式系统编程,通过采用经典的设计模式来提升代码的可读性、可维护性和可扩展性。以下将详细阐述相关知识点。 1. **状态机**:状态机...
- ROM与RAM操作:介绍如何在程序中动态分配和释放内存。 9. **调试技巧** - UVision IDE使用:详述Keil的集成开发环境UVision的功能,包括源代码编辑、编译、链接、调试等操作。 - 调试工具:介绍如何使用仿真器...
- **对象池设计模式**:为了提高效率,可能会使用内存池预先分配一部分内存,避免频繁的动态分配和释放。 8. **异常处理**: - **内存溢出与内存泄漏**:在存储管理中,可能会遇到这些问题,项目可能包含相应的...
C语言的静态、动态和堆栈内存分配方式需要根据系统资源和程序需求来选择。 最后,调试技巧是不可或缺的。虽然MCS-51可能没有现代微控制器那样的调试工具,但我们可以使用模拟器、串口监视器或者简单的LED灯来调试...
学会有效地分配和释放内存,避免内存泄漏,并考虑存储器的大小和速度差异,例如使用堆栈和静态内存分配。 编程技巧三:低级编程。在嵌入式系统中,常常需要编写驱动程序来与硬件设备交互。这涉及I/O端口操作、中断...
3. **学习设计模式**:了解并实践常用的设计模式,如单例模式、工厂模式等,这些模式可以帮助解决常见的软件设计问题。 4. **参与社区讨论**:加入Java相关的论坛或社区,与其他开发者交流学习经验和技巧。 通过...
- **0047**:动态内存分配与释放。 - **0048**:指针与数组之间的转换技巧。 - **0049**:默认构造器与析构器的理解与使用。 - **2.4**:组件与控件。 - **0050**:自定义组件的创建。 - **0051**:复合控件的...
这可能涉及到静态和动态内存分配策略的选取。 7. **电源管理**:在某些低功耗应用中,还需要考虑电源管理策略,如休眠模式和唤醒机制,以节省能源。 8. **软件工程实践**:由于代码需要严格遵循预定义的时间表,...
- 使用RAII(Resource Acquisition Is Initialization)设计模式,将资源管理与对象生命周期绑定。 8. **内存泄漏的调试技巧** - 使用Visual Studio的调试器查看内存堆状态。 - 分析内存泄露报告,定位泄露的...
Java设计模式是软件工程中的一种最佳实践,它们是解决常见编程问题的经验总结,可以提高代码的可重用性、可维护性和可扩展性。在Java领域,熟练掌握设计模式是成为一个高级开发者的必要条件。本资源包含两部分:Java...
通过对这些设计模式的学习和实践,不仅可以提升编程技巧,还能更好地应对软件开发中的挑战。以上介绍了GoF四人组提出的23种经典设计模式的基本概念及其应用场景,每一种模式都有其独特的用途和适用范围。理解和掌握...
设计模式是软件工程中的一种最佳实践,用于解决在开发过程中经常遇到的问题,提供了一套可重用的解决方案。这些模式都是经验丰富的...学习设计模式不仅有助于提高编程技巧,还能帮助你编写出更加优雅、易于维护的代码。
规范会给出一些优化代码的技巧和注意事项,例如避免不必要的内存分配和减少数据库查询。 通过学习和遵循这些设计规范,开发者可以写出更专业、更高效的.NET代码,从而提升整个项目的质量和效率。这份文档是.NET...
在 windows 下使用 VC 编程时,我们通常需要 DEBUG 模式下运行程序,而后调试器将在退出程序时,打印出程序运行过程中在堆上分配而没有释放的内存信息,其中包括代码文件名、行号以及内存大小。该功能是 MFC ...
- **静态内存分配**:WinCE提供了静态内存分配器(Kernel Heap),用于为内核组件和服务分配内存。这些内存一旦分配,在整个系统运行期间不会释放。 - **动态内存分配**:动态内存由进程堆管理,适用于应用程序的...
7. **设计模式**:设计模式是软件开发的最佳实践,书中的源代码可能涵盖了常见的设计模式,如工厂模式、单例模式、观察者模式等,帮助读者提高代码的可维护性和可扩展性。 通过《Visual C# 2005编程技巧大全》及...