Java代码优化方案 J2ME内存优化

Java代码优化方案 J2ME内存优化

从几本书上,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++)

不要重复初始化变量

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

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

考虑下面的代码:

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去查找哪里需要优化

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

Java代码优化方案 J2ME内存优化

时间: 2024-10-19 02:12:47

Java代码优化方案 J2ME内存优化的相关文章

Java代码优化,都有哪些常用方法?

Java代码优化是Java编程开发很重要的一个步骤,Java代码优化要注重细节优化,一个两个的细节的优化,产生的效果不大,但是如果处处都能注意代码优化,对代码减少体积.提高代码运行效率是有巨大帮助的,还能在一定程度上避免未知错误,常用的Java代码优化细节如下: 1. 为类.方法指定final修饰符 为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写,如果指定了一个类为final,则该类所有的方法都是final的,Java编译器会寻找机会内联所有的fi

Java代码优化的常用方法有什么?

Java代码优化是Java编程开发很重要的一个步骤,Java代码优化要注重细节优化,一个两个的细节的优化,产生的效果不大,但是如果处处都能注意代码优化,对代码减少体积.提高代码运行效率是有巨大帮助的,还能在一定程度上避免未知错误,常用的Java代码优化细节如下: 1. 为类.方法指定final修饰符 为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写,如果指定了一个类为final,则该类所有的方法都是final的,Java编译器会寻找机会内联所有的fi

Java代码优化有哪些常用的方法?

Java代码优化是Java编程开发很重要的一个步骤,Java代码优化要注重细节优化,一个两个的细节的优化,产生的效果不大,但是如果处处都能注意代码优化,对代码减少体积.提高代码运行效率是有巨大帮助的,还能在一定程度上避免未知错误,常用的Java代码优化细节如下: 1. 为类.方法指定final修饰符 为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写,如果指定了一个类为final,则该类所有的方法都是final的,Java编译器会寻找机会内联所有的fi

探讨深入Java虚拟机之内存优化

上一篇我们讲述了Java虚拟机的体系结构和内存模型,那么我们就不得不说到内存泄露.大家都知道,Java是从C++的基础上发展而来的,而C++程序的很大的一个问题就是内存泄露难以解决,尽管Java的JVM有一套自己的垃圾回收机制来回收内存,在大多数的情况下并不需要java程序开发人员操太多的心,但也是存在泄露问题的,只是比C++小一点.比如说,程序中存在被引用但无用的对象:程序引用了该对象,但后续不会或者不能再使用它,那么它占用的内存空间就浪费了. 我们先来看看GC是如何工作的:监控每一个对象的运

java程序的内存优化

面试常被问java的垃圾回收机制,感觉平时写代码很少用到,但是注重程序的内存优化确实很重要.<EffectiveJava>这本书有几条讲的挺好,拿过来总结下吧. 首先简单的概括下java的内存回收机制. java内存主要是堆内存和栈内存,栈中的内存会在程序运行到所在作用域之外后进行回收.堆中的内存会在没有引用指向的时候,JVM虚拟机在某个时间段根据特定的算法进行回收. 平时写程序注意如下几点,对程序进行内存优化 1.避免创建不必要的对象 a.使用基本类型替代装箱类型(享元模式) b.Strin

java内存优化牛刀小试

小猿做了两年的c++,上个月竟然被调到java项目,于是第一篇随笔就想八一八java的内存优化. 首先优化这种事,肯定是应该放到最后去做的,不过在写代码的过程中养成良好的习惯也是很重要的.在这里先推荐一本书<编写高质量代码:改善Java程序的151个建议.秦小波>. 首先,在写代码的时候,尽量少用对象,能用基本变量代替的就用基本变量,这点下面会举例. 其次,很多时候你想做一个功能,写一段代码,不是用时间换空间就是用空间换时间.要根据这个功能到底是看中时间,还是看中空间,常访问到的必然是要放到内

java内存优化实践

一般在java程序中,内存是个比较头痛的话题.虽然jvm能够通过GC机制很智能地回收资源,但是由于内存的释放都是jvm在进行操作,不恰当的使用会导致java的程序内存持续增大,直至最终OOM(out of memery) 那么,如何对java进行内存优化呢?一方面可以通过调整jvm的一些配置(内存,GC等),从jvm层优化配置:另一方面,从java程序角度,在代码层次上进行优化. 近期,做了些在java程序方面内存优化实践,积累了一些心得,总结如下: 对于资源消耗较大的对象(如数据库连接,Str

Android内存优化1 了解java GC 垃圾回收机制3

引言 接App优化之内存优化(序), 作为App优化系列中内存优化的一个小部分. 由于内存相关知识比较生涩, 内存优化中使用到的相关工具, 也有很多专有名词. 对Java内存管理, GC, Android内存管理, Dalvik/ART等知识有一个理论的认识, 可以让我们更好的使用这些工具, 分析内存问题. 据此, 我们就先从理论入手, 聊聊GC那些事儿. 1, 何为GC GC 是 garbage collection 的缩写, 垃圾回收的意思. 也可以是 Garbage Collector,

Android内存优化1 了解java内存分配 1

开篇废话 今天我们一起来学习JVM的内存分配,主要目的是为我们Android内存优化打下基础. 一直在想以什么样的方式来呈现这个知识点才能让我们易于理解,最终决定使用方法为:图解+源代码分析. 欢迎访问我的个人博客:senduo's blog 希望能在我们平时开发写代码的时候,能够知道当前写的这段代码,内存方面是如何分配的. 我们深知,一个Java程序员在很多时候根本不用操心内存的释放,而是依靠JVM去管理,以前写C++代码的时候,却要时刻记着new的空间要及时释放掉,不然程序很容易出现内存溢出