java内存优化的方法总结
作者:小妮浅浅 时间:2022-12-01 22:25:20
1、不必要的自动装箱。
自动装箱是将基础数据类型转换为相应的复杂类型,在HashMap的追加删除调查中充满了自动装箱问题,因此尽量避免HashMap代替SparseArray和ArrrayMap等问题。
2、内存复用。
资源复用:通用字符串、颜色、布局。
视图复用:类似于RecyclerView的优化再利用。
目标池:创建目标池,无需重复创建目标,类似于线程池,messae享受元模式。
Bitmap对象复用:使用inBitmap属性,Bitmap解码器可以通知Bitmap解码器使用已经存在的存储区域,新解码的bitmap可以尝试使用以前bitmap在heap中占有的存储区域。
3、App内存过低时,可以自主释放内存。
在App退出后台的内存紧张被Kill丢失的情况下,选择重写Application中onTrimmemory/onLowMemory方法,释放图像缓存、静态缓存。
4、优化其他场景。
item在无法回收的情况下释放了图像的引用。
使用字符串连接时,请尽量使用StringBuilder、StringBuffer(内存抖动)
定制view减少onDraw的时间和执行次数。
尽量使用静态内部类。
尽量使用基础数据类型。
适当时使用软/弱引用。
内容扩展:
对程序员们来说,代码优化是一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。
代码优化的目标是:
1、减小代码的体积
2、提高代码运行的效率
来源:https://www.py.cn/java/jiaocheng/30958.html
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
详解Java8与Runtime.getRuntime().availableProcessors()
Android使用Websocket实现聊天室
![](https://img.aspxhome.com/file/2023/6/60386_0s.png)
springboot集成Swagger的方法(让你拥有属于自己的api管理器)
![](https://img.aspxhome.com/file/2023/2/108432_0s.jpg)
HashSet和TreeSet使用方法的区别解析
JDK14性能管理工具之jstack使用介绍
C# 多窗口委托通信的实现
![](https://img.aspxhome.com/file/2023/6/104256_0s.png)
详解android 中animation-list 动画的应用
C#使用Ado.net读取Excel表的方法
C#支付宝扫码支付代码完整版
介绍java中Pair(配对)
PageHelper在springboot+mybatis框架中的使用步骤及原理解析
![](https://img.aspxhome.com/file/2023/4/101984_0s.png)
浅谈Java中的重载,重写,多态,静态绑定、动态绑定
LINQ基础之From和GroupBy子句
![](https://img.aspxhome.com/file/2023/9/83229_0s.png)
经典实例讲解C#递归算法
![](https://img.aspxhome.com/file/2023/2/94552_0s.gif)
AndroidStudio Gradle基于友盟的多渠道打包方法
![](https://img.aspxhome.com/file/2023/8/139608_0s.png)
OpenCV实现平均背景法
C#实现系统托盘通知的方法
hadoop运行java程序(jar包)并运行时动态指定参数
![](https://img.aspxhome.com/file/2023/9/57829_0s.png)
mybatis 运行时加载自定义mapper文件方式
![](https://img.aspxhome.com/file/2023/7/132057_0s.jpg)
Android动画之雷达扫描效果
![](https://img.aspxhome.com/file/2023/0/137900_0s.gif)