原创文章,如有转载,请注明出处:http://blog.csdn.net/yihui823/article/details/6932748
看到一段不好的代码。简单修改如下:
List l = new ArrayList(); for(int i = 0; i < 100;i++) { StringBuffer buff = new StringBuffer(); buff.append(i); l.add(buff); }
可能是因为用StringBuffer用习惯了。可是,这段代码,特别是在手机上运行,会非常占用资源。
毕竟,StringBuffer是个“胖对象”,里面有大量的数据。一个StringBuffer可比String大多了。
如果我们把循环改成4000000,则会抛出:java.lang.OutOfMemoryError: Java heap space
如果改成:
for(int i = 0; i < 4000000;i++) { l.add(String.valueOf(i)); }
那么,程序是正常运行的。
如果改成:
for(int i = 0; i < 6000000;i++) { l.add(new Integer(i)); }
容量放到6000000都完全没问题啊。
所以说,尽量使用Byte/Integer/Boolean等小对象,实在不行就用String,不要用StringBuffer这样的大对象。
StringBuffer用来做临时变量,new一个就行了,不要拿来做存储。