java 创建对象性能_JAVA 性能调优-类和对象使用技巧

刚在网上看到一篇关于Java性能调优的帖子,很是帮助,自己也用了十多年JAVA了,有些感同身受,这里引用那帖子结合自己的感受来谈下

技巧1:尽量少用new来创建对象

因为用new来创建对象的实例时,构造函数链上的所有构造函数都会被依次调用,导致效率很低。其实我们可以用一些小技巧,比如复用已有对象。比如说,一个类如果实现了Cloneable接口的话,可以调用这个类的对象的clone()方法来创建一个新对象,这样的对象不会调用任何类的构造函数。所以,这样生成新对象的速度比调用任何类的构造函数要来的快。

技巧2:尽量使用局部变量

如果学会JAVA虚拟机原理的话都知道,在调用方法的时候,传递的参数以及调用的时候创建的临时变量都是保存在栈(stack)上的,这种变量的创建速度快。而静态变量,实例变量,都是创建在堆(heap)上的,这种变量的创建速度慢。

技巧3:尽量减少方法调用

面向对象提成尽量用方法调用来间接的访问变量,而不是希望直接访问变量,但是方法调用会有压栈退栈等操作,从而会影响方法效率。比如说用setter和getter来访问变量比直接访问变量的效率就低很多,但是往往用方法来访问变量更加有可读性,所以我们应该在可读性和效率之间进行权衡

技巧4:尽量使用static,final,private

因为如果类级别被修饰为final,那么这个类是不可被继承的,类中的所有方法也不可以被继承的。那么编译器会进行优化,将其方法进行内联,来提高效率。在方法级,如果某个方法被修饰为static,final,private,则是不可以被覆盖,所以JAVA无需要动态关联,从而提高了效率

技巧5:让setter/getter也成为final

同样,这样做的目的就是让编译器知道这个方法是不可以被覆盖,从而将其转为inline来提高效率。

技巧6:不要不必要的类转型

比如A是B的父类,那么从B到A就不用转型了。

技巧7:尽量重用String对象

比如对于字符串进行连接,操作时候,可以用StringBuffer/StringBuilder来代替String ,因为String对象连接,操作会产生大量的新String对象,而系统不仅要花费时间生成这些对象,还要最后对这些新生成的对象进行垃圾回收和清理。

技巧8:别过分创建对象

因为GC不足够智能,所以必须保证过期的对象及时回收,对象一旦使用完就手动设置为null.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值