从几本书上,N个网站上整理的一些JAVA代码优化方案,最近的项目只有1M内存可用,必须很抠门了~J2ME项目更要注意的

避免内存溢出

l 不用的对象释放(置空)

如 :

a不为空时 a=new object()//这句代码执行时将有两个对象存在于内存中

较好的写法是a=null; a=new object();

不用的对象设置成null

l 内存溢出通常发生在构造函数中,在构造函数中变量在要用时再new,用完之后置null

一次性加载所有图片很容易造成内存峰值。

可以用 if(img==null){

Create…

}

l 考虑用静态工厂方法替代构造函数(但是,注意释放,单例模式的释放只能由自己来做)。

l 使用局部变量

l 图形重绘操作用部分重绘

l 避免在同一个类中通过调用get set来设置或调用变量,用public

l 避免在循环中生成同一个变量或调用同一个函数

l 常用变量尽可能用static final private

l 能用byte的就不用int,String

l 不要使用double

l 复制大量数据时用System.appaycopy()

l 避免使用泛型

l 尽量不使用try catch,必须使用时不要在循环体内写try catch

l 字符串操作使用StringBuffer

代码2是代码1执行速度的两倍:

代码1:

String title=new String(“大家好”);

Title+=”欢迎”;

Title+=”阅读”

//会在栈中生成五个对象:“大家好”,“欢迎”,“阅读”,“大家好欢迎”,“大家好欢迎阅读”

代码2:

StringBuffer title=new StringBuffer(“大家好”);

Tltle.append(“欢迎”);

Title.append(“阅读”);

l StringBuffer的构造器会创建一个默认大小(通常是16)的字符数组。在使用中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的数组复制过来,再丢弃旧的数组。在大多数情况下,你可以在创建StringBuffer的时候指定大小,这就避免了在容量不够的时候自动增长,以提高性能。

l 使用零值做为判断条件

For(int i=a.length()-1;i>=0;i--) 优于 for(int i=0;i<a.length();i++)

l 不要重复初始化变量

默认情况下,调用类的构造函数时, Java会把变量初始化成确定的值:所有的对象被设置成null,整数变量(byte、short、int、long)设置成0,float和 double变成0.0,逻辑值设置成false

l 乘法和除法用移位 ,除法比乘法慢,所以用乘于倒数来代替除法

考虑下面的代码:

for (val = 0; val < 100000; val +=5) { alterX = val * 8; myResult = val * 2; }

用移位操作替代乘法操作可以极大地提高性能。下面是修改后的代码:

for (val = 0; val < 100000; val += 5) { alterX = val << 3; myResult = val << 1; }

l 传递尽可能少的参数到经常调用的方法

l 不要有空方法,或方法内代码很少而方法又很少调用

l 避免类型转换

使用Profiler去查找哪里需要优化

改进你的算法,写最优的代码

转载于:https://www.cnblogs.com/yangyh/archive/2009/08/13/1544819.html

Java代码优化方案 J2ME内存优化相关推荐

  1. Android系统性能优化(69)---含内存优化、布局优化

    Android性能优化:含内存优化.布局优化 前言 在 Android开发中,性能优化策略十分重要 因为其决定了应用程序的开发质量:可用性.流畅性.稳定性等,是提高用户留存率的关键 本文全面讲解性能优 ...

  2. 抖音 Android 性能优化系列:Java 内存优化篇

    内存作为计算机程序运行最重要的资源之一,需要运行过程中做到合理的资源分配与回收,不合理的内存占用轻则使得用户应用程序运行卡顿.ANR.黑屏,重则导致用户应用程序发生 OOM(out of memory ...

  3. [深入理解Java虚拟机]第十一章 程序编译与代码优化-晚期(运行期)优化

    概述 在部分的商用虚拟机(Sun HotSpot.IBM J9)中,Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认 ...

  4. Go 调用 Java 方案和性能优化分享

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 一  背景 一个 ...

  5. kvm性能优化方案---cpu/内存/磁盘/网络

    kvm性能优化方案 kvm性能优化,主要集中在cpu.内存.磁盘.网络,4个方面,当然对于这里面的优化,也是要分场景的,不同的场景其优化方向也是不同的,下面具体聊聊这4个方面的优化细节. cpu 在介 ...

  6. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )

    文章目录 一. 图片质量压缩方法 二. 查找对应的 Native 方法源码 三. 分析 Bitmap.cpp 中动态注册 Native 方法 在博客 [Android 内存优化]图片文件压缩 ( An ...

  7. 【Android 内存优化】Java 内存模型 ( Java 虚拟机内存模型 | 线程私有区 | 共享数据区 | 内存回收算法 | 引用计数 | 可达性分析 )

    文章目录 一. Java 虚拟机内存模型 二. 程序计数器 ( 线程私有区 ) 三. 虚拟机栈 ( 线程私有区 ) 四. 本地方法栈 ( 线程私有区 ) 五. 方法区 ( 共享数据区 ) 1. 方法区 ...

  8. Android的内存优化的几种方案

    相信一步步走过来的Android从业者,每个人都会遇到OOM的情况.如何避免和防范OOM的出现,对于每一个程序员来说确实是一门必不可少的能力.今天我们就谈谈在Android平台下内存的管理之道,开始今 ...

  9. Java 堆内存优化

    Java 堆的唯一目的就是创建实例对象,几乎所有的对象都在堆上分配内存,如果堆空间分配内存出现问题可见是非常严重的.当 Java 堆内存出现问题时,我们应该怎么去优化呢?在学习堆内存优化之前,我们要先 ...

最新文章

  1. OpenStack环境搭建(五:附加项虚拟机文件备份使用)
  2. $httpprovider指令中拦截器interceptors的使用介绍
  3. 《小印记》源码分享--极光推送服务器篇
  4. 网络数据嗅探工具HexInject
  5. Java未解析编译_无法解析的编译问题:
  6. 基础数据结构-堆栈-拓展:行编辑
  7. mybatis学习(3):映射文件的配置和接口创建
  8. 微信公众号 自定义菜单栏目
  9. DataSet与DataReader的区别
  10. 个人管理:发掘自己的性格优势
  11. [转载]运维自动化201009
  12. 常用的python科学计算库有哪些_python科学计算常用的数学科学计算库有哪些?
  13. Eclipse修改代码字体
  14. Scan2CAD pro中文版
  15. 微软私有云系列 ----SQL 云部署
  16. 那些年我们一起追寻过的考研(华科计算机)
  17. 键盘轴体怎么选,HHKB键盘来告诉你
  18. 一加8 线刷官方ColorOS尝鲜版遇到的各种问题及解决方案
  19. 代驾APP开发多少钱才合适,你真知道吗
  20. 并发编程入门(五):Java并发包和Java8并发

热门文章

  1. MySQL 性能监控 4 大指标
  2. Map实现之HashMap(结构及原理)(转)
  3. 挂“洋头”卖奶粉,澳优还要欺骗好久
  4. 真格量化——50期权历史波动率策略
  5. android 编译luajit,Android 嵌入 LuaJIT 的曲折道路
  6. python对excel表统计视频教程_Python实现对excel文件列表值进行统计的方法
  7. Java线程池有哪些作用
  8. 【spider】多线程爬虫
  9. Go 1.18.1 Beta 尝鲜 泛型 FuzzTest workspace mode
  10. C语言综合期末作业,内蒙古农业大学2010年期末c语言综合作业.doc