一、Java方式实现

var str = String("asdf")
val strSoftRef = SoftReference<String>(str)
str =

二、kotlin委托实现

委托属性,虽然常用by lazy,没看到别人的文章还想没想到这东西。
看lazy大致可以了解委托的实现方式,结合一些文章差不多可以写成这样

fun <T> weak(initializer: () -> T) = Weak(initializer.invoke())class Weak<T>(r: T) {private var reference: WeakReference<T?> = WeakReference(r)operator fun getValue(thisRef: Any?, property: KProperty<*>): T? = reference.get()operator fun setValue(thisRef: Any?, property: KProperty<*>, value: T?) {this.reference = WeakReference(value)}
}

可通过委托来实现

var str by weak { "str" }

软引用可以采用同样的写法。但是对于虚引用来说,虚引用一般配合引用队列一起使用,委托只能处理单一属性,所以就不用委托了。

kotlin中使用软引用相关推荐

  1. Android中使用软引用和弱引用避免OOM的方法

    个人总结如下: 4种类型的引用 由高到低依次为:强引用>软引用>弱引用>虚引用 (1).强引用 如:Object object=new Object(),object就是一个强引用了 ...

  2. android 软引用intent对象,Android中的软引用(SoftRefrerence)和弱引用(WeakReference)

    在Android开发中,基本上很少有用到软引用或弱引用,这两个东东若用的很好,对自己开发的代码质量的提高有很大的帮助.若用的不好,会坑了自己.所以,在还没有真正的去了解它们之前,还是慎用比较好. 下面 ...

  3. java 软引用_Java中弱引用和软引用的区别以及虚引用和强引用介绍

    知道弱引用和软引用的概念与如何使用它们是两码事,引用类在垃圾回收工作的过程中有重要作用.我们都知道垃圾回收器会回收符合回收条件的对象的内存,但并不是所有的程序员都知道回收条件取决于指向该对象的引用类型 ...

  4. Java内存管理之软引用(Soft Reference)

    软引用(Soft  Reference)的主要特点是具有较强的引用功能.只有当内存不够的时候才回收这类内存,因此在内存足够的时候,他们通常不被回收.另外,这些引用对象还能保证在Java  抛出OutO ...

  5. Java 如何有效地避免OOM:善于利用软引用和弱引用

    Java 如何有效地避免OOM:善于利用软引用和弱引用想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用 ...

  6. java弱引用怎么手动释放,Java 如何有效地避免OOM:善于利用软引用和弱引用

    前言 想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程序中出现的OOM问题. 一.了解 ...

  7. [Android] Android开发优化之——使用软引用和弱引用

    Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用. 这里重点介绍一下软引用和弱引用. 如 ...

  8. 软引用、弱引用、 java

    为什么80%的码农都做不了架构师?>>>    Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用 ...

  9. Android使用软引用和弱引用

    Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用. 这里重点介绍一下软引用和弱引用. 如果 ...

最新文章

  1. linux怎么添加ubuntu源,ubuntu/linuxmint如何添加和删除PPA源
  2. Codeforces 1408 D. Searchlights(优化DP、思维)
  3. 东北能源大数据中心正式成立,一期将建设2.4万平方米数据中心
  4. hdu 5418(状态压缩dp+Floyd)
  5. STM32F103:二.(1)点亮LED
  6. 10年老分析师最终抛弃Excel,它不是最好的数据分析工具
  7. Ubuntu18.04安装wireshark3.0.6(版本可自己选)
  8. SSM SpringBoot vue物流配送人员管理系统
  9. 现代软件工程_团队项目_阿尔法阶段_第二次会议记录_2017.11.13
  10. jeesit1.27(3)-id生成策略
  11. 计算机控制教师端,摆脱学校机房教师端控制的方法汇总
  12. php 图片木马,php图片木马实现原理
  13. 【JZOJ100208】【20190705】传说之下
  14. 2012年上半年信息系统项目管理师 上午试题和参考答案及解析
  15. 在手机安装 Kali Linux
  16. python 培训基础
  17. 7-3 最长公共前后缀
  18. 收藏:信息安全相关的认证有哪些?有没有必要考?
  19. 微信小程序实现音乐播放器(5)
  20. JEESNS V1.2.0-RC3 发布,Java 开源 SNS 社区系统

热门文章

  1. 私域运营中引流加爆微信好友的方法
  2. 计算机第二道密码怎么取消,电脑设置两道密码的具体方法
  3. 高等数学(第七版)同济大学 总习题十一 个人解答
  4. 软件使用说明书V1.0发布
  5. javaweb+servlet+mysql登录+注册+增删改查源码
  6. Win7系统不能调整屏幕亮度
  7. 【OBS】VS调试启动exe的环境设置
  8. 通信算法之六十:SC_FDE系统的物理层算法设计与工程实现
  9. Win10 DISM 清理 C盘的 WinSXS 文件夹
  10. “人工智能”初创公司所面临的问题