锁定老帖子 主题:Java 性能优化
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-02-27
对于每个java程序员都知道怎样创建对象,但是你知道怎样创建才能提高应用的性能呢? 你知道创建对象的应用规则吗? (1).要尽量避免在循环体中创建对象. (2).尽量及时使对象符合垃圾回收标准. (3).不要采用过深的继承层次. (4).访问本地变量优于访问类中的变量. 例如: Vector v=new Vector(); for(int i=0; i<100;i++){ Object obj=new Object(); } 这样的写法大家都不陌生吧。可是这样会浪费大量的内存空间。正确的方法如下。 Vector v=new Vector(); Object obj=null; for(int i=0; i<100;i++){ obj=new Object(); } 这样内存中保存一个对象的引用,从而减少了浪费内存空间的情况。 还有: 不要对一个对象进行多次初始化。这样也会带来较大的内存开销,相抵系统性能。 public class Test(){ private HashMap map=new HashMap(); public Test(){ map=new HashMap() } } 以上的几点都好理解。可是有很多新手会出现上面的问题哦!!!! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-02-27
第一个例子有区别吗?
|
|
返回顶楼 | |
发表时间:2008-02-27
当然有区别了。第二种在内存中保存一个对象的引用,而第一种的编码方式会在内存中产出大量的对象。浪费大量的内存空间,还有也增加了系统做垃圾回收的负荷。仔细想想是不是这样。
|
|
返回顶楼 | |
发表时间:2008-02-27
shikonglaike 写道 当然有区别了。第二种在内存中保存一个对象的引用,而第一种的编码方式会在内存中产出大量的对象。浪费大量的内存空间,还有也增加了系统做垃圾回收的负荷。仔细想想是不是这样。
我觉得,第二种方法在内存里面同样保留大量对象的匿名引用 |
|
返回顶楼 | |
发表时间:2008-02-27
这两段代码都创建了100个一般对象和1个Vector,占用的内存为什么不一样呢?
所谓浪费大量的内存空间浪费在哪里了呢? |
|
返回顶楼 | |
发表时间:2008-02-27
mvmouse 写道 这两段代码都创建了100个一般对象和1个Vector,占用的内存为什么不一样呢?
所谓浪费大量的内存空间浪费在哪里了呢? 上一个有一百个引用.下一个有一个引用. |
|
返回顶楼 | |
发表时间:2008-02-27
大家说的很好!
你们的意思是这两个一样了? |
|
返回顶楼 | |
发表时间:2008-02-27
Object obj=null;
for(int i=0; i<100;i++){ obj=new Object(); } 没必要,而且难看 |
|
返回顶楼 | |
发表时间:2008-02-27
luanma 写道 Object obj=null;
for(int i=0; i<100;i++){ obj=new Object(); } 没必要,而且难看 有必要的.狮子说的对呢. 一个引用要占4个字节的内存呢. |
|
返回顶楼 | |
发表时间:2008-02-27
有没有哪位能用测试数据说话?
|
|
返回顶楼 | |