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
猜你喜欢
- 一、同步问题提出线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。例如:两个线程ThreadA、ThreadB都操作同一个对
- SpringMVC接收到请求和数据后,进行一些了的处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎
- 从java14开始, switch语句有了一个很大的调整, 这就让swicth语句有了更多的操作和选择,在代码上,更加的简便灵活.switc
- 线程池类图我们最常使用的Executors实现创建线程池使用线程主要是用上述类图中提供的类。在上边的类图中,包含了一个Executor框架,
- 你好,我是小黄,一名独角兽企业的Java开发工程师。感谢茫茫人海中我们能够相遇,俗话说:当你的才华和能力,不足以支撑你的梦想的时候,请静下心
- 一、interrupt的使用特点我们先看2个线程打断的示例首先是可打断的情况:@Testpublic void interruptedTes
- Android版本更新实例详解1、导入xutils的jar包 2、在AndroidManifest.xml中添加权限 3、选择下载的路径,和
- 场景发布微服务的操作一般都是打完新代码的包,kill掉在跑的应用,替换新的包,启动。spring cloud 中使用eureka为注册中心,
- 一 为什么要使用线程池对于操作系统而言,创建一个线程的代价是十分昂贵的, 需要给它分配内存、列入调度,同时在线程切换时要执行内存换页,清空
- 前言最近有项目需要开发档案打包下载功能,其中包含很多大附件,项目使用minio存储且不在同一台服务器上,为了优化速度决定使用windows共
- 背景为了了解Seata AT模式的原理,我通过源码解读的方式画出了Seata AT模式启动的图示:如果是基于Springboot项目的话,项
- 1. 线程转储简介线程转储(Thread Dump)就是JVM中所有线程状态信息的一次快照。线程转储一般使用文本格式, 可以将其保存到文本文
- 最近在使用 url 的 queryString 传递参数时,因为参数的值,被DES加密了,而加密得到的是 Base64的编码字符串类似于:z
- Java 用反射设置对象的属性值实例详解/** * 用反射设置对象的属性值 * @param obj 需要設置值的對象 * @param f
- JAVA简单写学生信息管理系统,实现学生信息的输入、查询、修改、删除操作package Week;import jdk.internal.u
- 前言在日常开发中,除了修改请求参数、设置响应header,响应body外,还有一种需求就是url重新,或者是修改url,这里简述一下怎么在z
- Navigator 的 push 和 pop方法Navigator 导航器的 push 和 pop 方法可以携带参数在页面间传递,其他变形的
- 本文实例为大家分享了java实现猜数字游戏的具体代码,供大家参考,具体内容如下随机生成0~100的数字,通过控制台输入猜测数字,输出进行提示
- 修改FeginCilent定义的服务名到指定服务通过覆盖类来修改对应的服务名,这里将所有的FeginClient对应的服务名都修改好。pac
- 短网址(Short URL) ,顾名思义就是看起来很短的网址。自从twitter推出短网址服务以后,各大互联网公司都推出了自己的短网址服务。