Java引用优化

引言

Java的四种引用方式

  • 强引用:Java里面使用最广泛的一种,也是对象默认的引用类型,如果一个对象具有强引用,那么垃圾回收器是不会对它进行垃圾回收操作的,当内存空间不足时,Java虚拟机就会抛出OutOfMemoryError错误,这时候你的应用就会终止或者崩溃。
  • 软引用:一个对象如果只有软引用,那么当内存空间充足的时候,垃圾回收器不会对它做回收操作,但当内存不足的时候,就会对它进行垃圾回收操作了。软引用可以用来实现内存敏感的高速缓存,如果再配合引用队列使用,当软引用指向的对象被回收后,Java虚拟机将会把这个软引用加入到与之关联的引用队列中。
  • 弱引用:很多面试官喜欢问软引用和弱引用的区别这个问题。单从字面理解,弱引用是比软引用更弱的一种引用。当垃圾回收器扫描到只有弱引用的对象时,不管当前内存够不够用都会给你回收掉。
  • 虚引用:和上面的软引用和弱引用不同的是,虚引用不会对它所指向的对象有任何影响,也就是说对象还是按照它自己之前原来的方式被垃圾回收器回收,虚引用的本质就是一个标记的作用,主要用来跟踪垃圾回收活动。

那么在代码方面要怎么去优化呢?

  • 避免创建非必要的对象

    每创建一个对象就要给它分配内存空间,对象的销毁就需要垃圾回收,这些都会在一定程度上影响应用的性能。因此一般来说,最好是重用对象而不是每次都去新创建一个对象,尤其需要注意的是不要在循环体重去新建对象。

  • 对常量使用static final修饰

    对于基本数据类型和String类型的常量,建议使用static final去修饰。这样的再次对他们调用的时候就不会涉及到类的初始化,而是直接调用字面量。

  • 避免内部的Getters/Setters

    在面向对象编程过程中Getter/Setters的作用主要是对外屏蔽具体的变量定义,从而达到更好的封装性。但是如果在类内部还是通过这种方式去调用的话,就会降低访问的速度。根据Android官方统计,在没有JIT编译器的情况下,直接调用会比通过Getters/Setters调用的速度快3倍。在有JIT编译器的情况下是7倍。

  • 代码重构

    代码的重构是一项长期而艰巨的任务。需要长期去更新维护高质量的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值