如何写出更有效率的代码?

(1) 尽早释放无用对象的引用。大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域后,自动设置为null;我们在使用这种方法时,必须特别注意一下复杂的对象图,例如数组、队列、树、图等,这些对象之间的相互引用关系较为复杂,对于这类对象,GC回收它们一般效率较低。如果程序允许,尽早将不用的引用对象赋予为null,这样可以加速GC的工作;

(2)尽量少用finalize函数。finalize函数是Java给程序员提供一个释放对象或资源的机会。但是,它会加大GC的工作量,因此尽量少采用finalize方式回收资源;

(3)如果需要使用经常用的的图片,可以使用soft应用类型。它尽可能将图片保存在内存中,供程序使用,而不引起OutOfMemory;

(4)注意集合数据类型,包括数组、树、图、链表等数据结构,这些数据结构对GC来说,回收更为复杂。另外,注意一些全局的变量,已经一些静态变量。这些变量往往容易引起悬挂对象,造成内存资源浪费。

(5)尽量避免在类的默认构造器中创建、初始化大量的对象,防止在调用其本身或其子类的构造器时造成不必要的内存资源浪费;

(6)尽量避免强制系统做垃圾内存的回收,增长系统做垃圾回收的最终时间,降低系统性能;

(7)尽量避免显示申请数组空间,当不得不显示申请数组空间时尽量准确地估计出其合理值,以免造成不必要的系统内存开销;

(8)尽量在做远程方法调用(RMI)类应用开发时使用瞬时值(transient)变量,除非远程调用端需要获取该瞬时值(transient)变量的值;

(9)尽量在合适的场景下使用对象池技术以提高系统的性能,缩减系统内存开销,但要注意对象池的尺寸不宜过大,及时清除无效对象释放内存资源,综合考虑应用运行环境的内存资源限制,避免过高估计运行环境所提供内存资源的数量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值