Android随记------OOM之痛(图片篇)

本文总结了在Android开发中处理Bitmap内存溢出问题的经验,包括利用Matrix和Canvas避免频繁创建Bitmap,及时释放资源,减少Bitmap的create和copy操作,避免全局变量,考虑资源复用,以及降低素材图片大小等优化策略。通过这些方法,可以有效管理Bitmap内存,防止OOM的发生。

近段时间一直在折腾Bitmap相关的内存溢出问题,就调试解决中的感受和经验做个简单的总结。

(关于Bitmap的内存消耗机制就不作详细说明,大概就是Bitmap关系到的内存是native heap,它与Davilk heap有所区别,因为native heap并不受java gc的控制,所以必须手动去释放)


1.利用图片组件的ondraw方法中cavans进行绘制

      尤其是在需要控制图片的频繁刷新(比如放大,旋转等)时,不断创建新的Bitamp对象的方式是非常糟糕的,即使在代码中进行及时的内存释放,频繁的create风险太高,可以通过利用Matrix、Canvas操纵一个Bitmap对象来实现。


2.及时释放bitmap对象

       注意对作为中间变量的bitmap对象的recycle释放,必要时考虑调用System.gc()通知系统更“积极”地进行垃圾回收


3.操作bitmap对象时,减少bitmap的creat,copy等操作,操作考虑是否能重用元bitmap对象

      尽量减少Bitmap.createBitmap,bi

Spring AI Alibaba 是社区核心实现之一,期望帮助开发者更容易地构建智能体应用。它在设计理念上区别于 Spring AI 只做底层原子抽象,基于 Graph 开发者能构建工作流、多智能体应用。在设计理念上借鉴 Langgraph,可理解为 Java 版的 Langgraph 实现,社区还增加了大量预置 Node、简化了 State 定义过程等,方便开发者编写对等低代码平台的工作流、多智能体等 [^1]。 使用 Spring AI Alibaba 时,因为其基于 Spring Boot 3.x 开发,本地 JDK 版本要求为 17 及以上。以下是 Maven 依赖配置示例: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.5.0</version> <relativePath/> </parent> <properties> <java.version>21</java.version> </properties> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--spring-ai-alibaba--> <dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-starter</artifactId> <version>1.0.0-M5.1</version> </dependency> ``` 还需要配置 API 密钥: ```properties spring: ai: dashscope: api-key: your-api-key ``` 在扩展功能方面,除了 spring-ai-alibaba-core 中包含的 JsonDocumentParser 和 TextDocumentParser,spring-ai-alibaba 还提供了许多 document-parser 的扩展包,如 Markdown、pdf 等 [^2]。其内部原理遵循 RAG 运作原理,使用 spring-ai-rag 的框架 [^3]。 在使用案例上,Spring AI Alibaba Graph 可用于人类反馈相关应用,基于 Graph 开发者可以构建工作流、多智能体应用 [^1]。另外,在源码学习中,在 DeepResearchConfiguration 里,planner 节点是一个 PlannerNode 类型的节点,创建时需要传入 2 个参数,分别是 plannerAgent 和 converter [^5]。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值