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


猜你喜欢
- 以上是集成测试后的Jprofiler演示效果图今晚想在IDEA中集成一下JProfiler11(现在有12版本了)工具,去网上看了下都是老版
- 很多人使用Nacos其实并没有真正的去读过官网,以至于忽视了很多重要的细节,Nacos为我们提供了大量API,但是这些API默认是没有开启认
- 用Scanner输入,用PrintStream输出功能:从in.txt读入,输出到out.txt代码:和下面的一样package ioTes
- 1、在POM.xml文件下添加如下代码;注意:version、configuration、executions三个标签是我后来查找添加的,网
- 在之前的C#版本中, 如果我们想要进行异步的Udp, 需要单开线程接收消息, C#7.1开始, 我们可以使用async/await关键字来编
- 本文接着上一篇,继续为大家分享了JavaWeb实现学生信息管理系统的第二篇,供大家参考,具体内容如下今日任务:实现学生管理系统的查找和添加功
- 本文实例讲述了Java设计模式之工厂模式。分享给大家供大家参考,具体如下:一、 简单工厂先来思考一个问题。我们平时写程序时,会有这种情况,A
- 在 Android design support 包中提供了一种在输入不合适字符时一直显示的提示方式来显示,现在已经开始在更多的应用上被使用
- RandomAccessFileRandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,
- 消息都是存放在一个消息队列中去,而消息循环线程就是围绕这个消息队列进入一个无限循环的,直到线程退出。如果队列中有消息,消息循环线程就会把它取
- 网上看到的很多winform窗体圆角设计代码都比较累赘,这里分享一个少量代码就可以实现的圆角。主要运用了System.Drawing.Dra
- 一个activity就好比一个网页,此文章讲解怎样创建一个activity并且实现跳转!一、学习创建Activity1、新建一个java类,
- 本文实例为大家分享了struts2和hibernate实现登录和注册功能,供大家参考,具体内容如下1、该项目使用MySQL数据库,数据库名为
- 前言 开始始学习android,对android的启动模式没有什么了解,就使用了时间判断是否重复点击了两次按钮,启动另外的activity界
- 1.挂起函数挂起函数在Kotlin协程中是一个比较重要的知识点,协程的非阻塞式、Channel、Flow等API都对它有充分的理解才能在学习
- 主内存和工作内存Java 内存模型规定了所有的变量都存储在主内存中, 每条线程有自己的工作内存线程的工作内存中保存了被该线程使用的变量的主内
- 详解Kotlin:forEach也能break和continue这样的问题。也就是说,他们想用forEach而不是for循环,因为这很fp,
- 前言Windows 11下所有控件已经默认采用圆角,其效果更好、相对有着更好的优化,只是这是默认的行为,无法进一步自定义。注意两点:Pain
- 本文实例讲述了C#检查键盘大小写锁定状态的方法。分享给大家供大家参考。具体分析如下:1、命名空间:using System.Runtime.
- 当一个应用在后台执行时,前台界面就不会有什么信息,这时用户根本不知道程序是否在执行、执行进度如何、应用程序是否遇到错误终止等,这时需要使用进