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++)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

was 程序jvm_【保家护行航】WAS知识学习分享

文/王文平保家护行航&#xff1a;航是护航&#xff0c;是保障人真抓实干&#xff0c;持之以恒&#xff0c;切实做好运维保障本职工作&#xff0c;守护农行生产安全的务本崇实&#xff1b;航是领航&#xff0c;是保障人敬业敏学&#xff0c;精益求精&#xff0c;努力提高运维管理…

LeetCode 824. 山羊拉丁文

1. 题目 给定一个由空格分割单词的句子 S。每个单词只包含大写或小写字母。 我们要将句子转换为 “Goat Latin”&#xff08;一种类似于 猪拉丁文 - Pig Latin 的虚构语言&#xff09;。 山羊拉丁文的规则如下&#xff1a; 如果单词以元音开头&#xff08;a, e, i, o, u&am…

jQuery学习笔记:事件

一、页面载入1、ready(fn)当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。这是事件模块中最重要的一个函数&#xff0c;因为它可以极大地提高web应用程序的响应速度。 简单地说&#xff0c;这个方法纯粹是对向window.load事件注册事件的替代方法。通过使用这个方法&#…

torch.nn.Module()

torch.nn.Module() 如果自己想研究&#xff0c;官方文档 它是所有的神经网络的根父类&#xff01; 你的神经网络必然要继承&#xff01; 模块也可以包含其他模块&#xff0c;允许将它们嵌套在树结构中。所以呢&#xff0c;你可以将子模块指定为常规属性。常规定义子模块的方法…

dlib 怎么安装vs2017_win10中的dlib库安装过程

之前试过很多方法结果都失败&#xff0c;最后终于发现一个成功的方法&#xff0c;先记一下以防忘记。参考&#xff1a;记一次Win10环境python3.7安装dlib模块趟过的坑由于我是通过Anaconda安装的Python&#xff0c;所以环境与这位博主的有所不同&#xff0c;所以具体情况需要根…

LeetCode 779. 第K个语法符号(找规律)

1. 题目 在第一行我们写上一个 0。 接下来的每一行&#xff0c;将前一行中的0替换为01&#xff0c;1替换为10。 给定行数 N 和序数 K&#xff0c;返回第 N 行中第 K个字符。&#xff08;K从1开始&#xff09; 例子: 输入: N 1, K 1 输出: 0输入: N 2, K 1 输出: 0输入: …

ADO.NET、ODP.NET、Linq to SQL、ADO.NET Entity 、NHibernate在Oracle下的性能比较

下面我对Oracle数据库在.NET平台下的主要几种数据访问方式进行测试。 下面是测试表&#xff1a; CREATE TABLE CUSTOMERS ( "CUSTOMER_ID" NUMBER NOT NULL , "FIRST_NAME" VARCHAR2(255 CHAR) NOT NULL , "LAST_NAME" VARCHAR2(255 CHAR) …

LeetCode 第 186 场周赛(1060/3107,前34.1%)

文章目录1. 比赛结果2. 题目1. LeetCode 5392. 分割字符串的最大得分 easy2. LeetCode 5393. 可获得的最大点数 medium3. LeetCode 5394. 对角线遍历 II medium4. LeetCode 5180. 带限制的子序列和 hard1. 比赛结果 做出来了 1、2 题&#xff0c;第3题模拟法&#xff0c;超时&…

torch.nn.embedding()

作者&#xff1a;top_小酱油 链接&#xff1a;https://www.jianshu.com/p/63e7acc5e890 来源&#xff1a;简书 内容&#xff1a;上述是以RNN为基础解析的 torch.nn.Embedding(num_embeddings, embedding_dim, padding_idxNone, max_normNone, norm_type2.0, scale_grad_by_fre…

oracle杀死进程时权限不足_在oracle中创建函数时权限不足

我对oracle有一点了解。我试图创建一个如下所示的函数。在oracle中创建函数时权限不足CREATE OR REPLACE FUNCTION "BOOK"."CONVERT_TO_WORD" (totpayable IN NUMBER) RETURN VARCHARAStotlength NUMBER;num VARCHAR2(14);word VARCHAR2(70);word1 VARCHAR…

哇塞,打开一个页面访问了这么多次数据库??

用SQL Server 事件探查器看了一下&#xff0c;哇塞&#xff0c;每打开一个页面都select了n多次数据库&#xff0c;而且很多都是类似的代码&#xff1f;为啥&#xff1f; (1)、二级嵌套绑定数据源 (2)、二级联动 (3)、……多着呢&#xff01; 解决方法&#xff1a; 对于数据不大…

torch.nn

torch.nn 与 torch.nn.functional 说起torch.nn&#xff0c;不得不说torch.nn.functional! 这两个库很类似&#xff0c;都涵盖了神经网络的各层操作&#xff0c;只是用法有点不同&#xff0c;比如在损失函数Loss中实现交叉熵! 但是两个库都可以实现神经网络的各层运算。其他包…

ORACLE使用JOB定时备份数据库

Oracle的备份一般都是在操作系统上完成&#xff0c;因此定时备份Oracle的功能一般都是由操作系统功能完成&#xff0c;比如crontab。但是Oracle的PIPE接口使得在Oracle数据库中通过JOB来备份Oracle变得可能。 这篇文章给出一个简单的例子&#xff0c;说明如何在JOB中定期备份数…

mysql 装载dump文件_mysql命令、mysqldump命令找不到解决

1、解决bash: mysql: command not found 的方法[rootDB-02 ~]# mysql -u root-bash: mysql: command not found原因:这是由于系统默认会查找/usr/bin下的命令&#xff0c;如果这个命令不在这个目录下&#xff0c;当然会找不到命令&#xff0c;我们需要做的就是映射一个链接到/u…

LeetCode 796. 旋转字符串

1. 题目 给定两个字符串, A 和 B。 A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A ‘abcde’&#xff0c;在移动一次之后结果就是’bcdea’ 。如果在若干次旋转操作之后&#xff0c;A 能变成B&#xff0c;那么返回True。 示例 1: 输入: A abcde, B cdeab …

【DKN】(一)KCN详解

_ init _&#xff08;&#xff09;函数 参数&#xff1a; self, config, pretrained_word_embedding, pretrained_entity_embedding, pretrained_context_embedding config&#xff1a; 设置的固定的参数&#xff01; pretrained_word_embedding&#xff1a; 根据下面的使用是…

搜索引擎优化经验谈

转自&#xff1a;http://blog.donews.com/zszwyds/archive/2009/08/24/1551179.aspx 费话少说&#xff0c;直入正题。 1. “白马非马”的关键字(词) 很多客户对于自己网站的关键词无从下手&#xff0c;大部分的客户选择都是大而全的关键词&#xff0c;很多的关键词如果选择…

iphone版 天行skyline_Skyline QT

应用标题Skyline QT应用描述An information and feedback gathering tool for our Skyline Queenstown visitor to discover the complex and its array of activities and food and beverage outlets.Welcome to the world of SkylineAre you looking for things to do in New…

LeetCode 788. 旋转数字

1. 题目 我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后&#xff0c;我们仍可以得到一个有效的&#xff0c;且和 X 不同的数。要求每位数字都要被旋转。 如果一个数的每位数字被旋转以后仍然还是一个数字&#xff0c; 则这个数是有效的。 0, 1, 和 8 被旋转后…

pycharm中无法识别相对路径的问题

这种情况如果在Windows下操作如下&#xff1a; 第一步&#xff1a; 往往拷贝下来的程序是在linux上运行的 第二步&#xff1a; 设置根路径 要调整有python.exe文件的地方&#xff01; 这两个路径要设置成为自己的项目根目录&#xff01;