https://www.jianshu.com/p/825cca41d962
引用的本质是,可以把jvm内存当做一个大的池化技术,池化技术最重要的是逐出策略。那么,这三种引用对应的逐出策略是不一样的,具体可以看上面链接里的介绍。简单来说,强引用的逐出策略是,如果一个对象没有了强引用,就逐出。软引用是,如果没有了强引用,gc是不会把这个对象逐出的,除非在gc后,仍然内存不够用,这时会进行第二次gc,并把这些对象逐出。其他俩个看上面的链接介绍。
引用对象的另一个作用是,在jvm进行回收的时候,会进行回调通知,利用这个功能可以实现一些有意思的事情,比如WeakReferenceMap. 具体实现可以看WeakReference的实现和WeakReferenceMap的实现。 WeakReferenceMap其实也是池化技术的一种特殊场景,正常的是cache的对象本身的过期逐出,而WeakReferenceMap实现的是,key过期后,对value的逐出。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2016-07-15 2016 年排名 Top 100 的 Java 类库
2016-07-15 Java异常处理的10个最佳实践
2016-07-15 检查异常和未检查异常不同之处
2014-07-15 CString/string 区别及其转化
2014-07-15 string转换成char*
2014-07-15 afx_msg解释
2014-07-15 SQL日期格式转换