A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡建彪 黑马帝   /  2012-10-26 10:38  /  1042 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、别用new Boolean()。
在很多场景中Boolean类型是必须的,比如JDBC中boolean类型的set与get都是通过Boolean封装传递的。
ps.setBoolean(“isClosed”,new Boolean(true));
ps.setBoolean(“isClosed”,new Boolean(isClosed));
ps.setBoolean(“isClosed”,new Boolean(i==3));
通常这些系统中构造的Boolean实例的个数是相当多的,所以系统中充满了大量Boolean实例小对象,这是相当消耗内存的。Boolean类实际上只要两个实例就够了,一个true的实例,一个false的实例。
Boolean类提供两了个静态变量:
以下是引用片段:
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
因为valueOf的内部实现是:return (b ? TRUE : FALSE);
所以可以节省大量内存。
2、别用new Integer。
和Boolean类似,java开发中使用Integer封装int的场合也非常 多,并且通常用int表示的数值通常都非常小。SUN SDK中对Integer的实例化进行了优化,Integer类缓存了-128到127这256个状态的Integer,如果使用 Integer.valueOf(int i),传入的int范围正好在此内,就返回静态实例。这样如果我们使用Integer.valueOf代替new Integer的话也将大大降低内存的占用。
3、避免过深的类层次结构和过深的方法调用。因为这两者都是非常占用内存的(特别是方法调用更是堆栈空间的消耗大户)。
4、尽量避免使用static变量,类内私有常量可以用final来代替。

以上只是几种小方法,欢迎大神们补充,讨论。


评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 神马都是浮云

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马