`
leonzhx
  • 浏览: 796944 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Understanding Weak References之读后小结

    博客分类:
  • Java
阅读更多

在阅读了Understanding Weak References  之后作如下小结:

 

1. weak reference主要用在:当你想定义一个公共的地方放object的cache或查询object的extra information(往往这里的object都是singleton),而你又希望当object失效时(没有别的地方引用它时)它可以自动被回收,那就把这个object包一个weak reference.

 

2. ReferenceQueue主要是当object失效时(没有strong 引用),将weak reference加入其中以便回收weak reference 对象,可以作为参数传入weak reference构造函数中。

 

3. SoftReference引用的对象会比WeakReference引用的对象多活一会儿,那取决于内存空间的缺乏程度。而PhantomReference无法返回对象的引用( get()方法始终返回null)。WeakReference 在对象失效后(没有strong 引用)就会被加入到ReferenceQueue中而PhantomReference只有当object实际被回收后才会被插入ReferenceQueue中。

 

4.PhantomReference主要用于追综对象的销毁情况,还有用来取代finalize()做非内存资源释放工作。finalize()方法会在对象回收前被GC调用一次,然后在下次GC时对象才会被回收。所以在finalize()方法中如果生成该对象的强引用,那这个对象就复活了。同时finalize()方法(如果override)并不会被GC即时调用(还是取决于内存空间缺乏程度),可能会经过几个GC周期才被调用,这样对内存突然吃紧的情况容易造成OOM问题。

0
0
分享到:
评论

相关推荐

    weak,Strong指针小结

    ARC的判断准则: 只要没有强指针指向对象,就会释放对象,弱指针不会这样,及时有弱指针指向对象,对象没有强指针指向,也会自动释放掉。一般,无需显式声明为强指针,但是在封装里,定义方法的时候需要写明。...

    ARM 之十一__weak 代码 WEAK.7z

    在嵌入式系统开发中,特别是使用ARM架构的硬件平台,`__weak`关键字是一个非常重要的概念,它涉及到链接器的符号解析和程序的优化。本文将深入探讨`__weak`关键字的含义、使用场景以及如何在实际项目中应用。 `__...

    函数weak属性理解_弱声明实例

    在编程世界中,`weak`属性是一个非常关键的概念,尤其在C语言和汇编编程中。这个特性主要用于解决引用计数的问题,防止出现循环引用导致的内存泄漏。当我们谈论`weak`属性时,通常是在讨论对象的生命周期管理和内存...

    Weak Signal Digital GNSS Tracking Algorithms.pdf

    各位小伙伴可以根据具体情况选择。 1、gps-原理-应用课件 2、GPS原理与应用(Understanding GPS Principles and Applications第一版的中文版) 3、Understanding GPS Principles and Applications, Second ...

    VSoft.WeakReferences:德尔福的弱引用

    VSoft.WeakReference 该单元背后的思想是提供与Delphi中引用计数对象类似的生命周期,就像WeakReference在.NET中一样。 当涉及循环引用时,delphi中引用计数的对象有一些限制,例如TParent引用它的子对象(通过...

    weak应用程序,数据挖掘平台

    【标题】:“weak应用程序,数据挖掘平台” 这个标题暗示了一个名为“weak”的应用程序,它是一个专为数据挖掘设计的平台。在IT领域,数据挖掘通常指的是从大量数据中通过使用各种算法来发现有价值的信息和模式的...

    weak操作入门(数据挖掘)

    WEKA 操作入门(数据挖掘) WEKA 是一个开放的数据挖掘工作平台,用于非商业目的的研究行为,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面...

    Weak-Password.zip

    在网络安全领域,弱口令是引起许多安全问题的源头之一。"Weak-Password.zip" 这个压缩包文件专门收集了常见的弱口令,旨在帮助用户了解并防范这些潜在的安全风险。弱口令通常指的是那些容易被猜测或破解的密码,它们...

    iOS 中weak的实现代码示例

    这一过程发生在`objc_dealloc`函数中,确保`weak`引用在对象释放后不会指向已释放的内存。 此外,`weak`引用的实现还涉及到内存布局优化,例如`WEAK_INLINE_COUNT`定义的弱引用静态数组,用于减少内存分配和提高...

    Weak Convergence and Empirical Processes

    弱收敛余经验过程是概率统计专业博士生的必修课程,也是经典书籍。

    iOS weak 关键字漫谈1

    iOS 开发中,weak 关键字是基础知识之一,经常在面试中被问到。在 delegate、block、NSTimer 等场景下使用 weak 关键字,以避免循环引用引发的内存泄漏。这是教科书式的用法。然而,weak 关键字的方便之处不局限于...

    weak galerkin finite element meathods on polytopal

    本文介绍了一种新的弱伽辽金(Weak Galerkin,简称WG)有限元方法,该方法针对多面体网格上的二阶椭圆型偏微分方程。这种方法通过使用离散的弱梯度算子作用于有限元划分上不连续的多项式片段来设计WG有限元方法(WG-...

    Android代码-android-weak-handler

    Android Weak Handler Memory safer implementation of android.os.Handler Problem Original implementation of Handler always keeps hard reference to handler in queue of execution. Any object in Message or...

    weak-ptr 和 shared-ptr 源码

    这样确保了对象只会在所有`shared_ptr`都被销毁后才被删除,实现了所谓的"共享所有权"。 `weak_ptr`是`shared_ptr`的补充,它不参与对象的生命周期管理,即不会增加或减少对象的引用计数。`weak_ptr`主要用于解决`...

    Inversion arrangements and the weak Bruhat order

    逆序超平面排列与弱布吕阿序,范久瑜,,对每个排列$w$,我们可以根据$w$的逆序构造一个超平面排列$mathcal{A}_w$,称为$w$对应的逆序超平面排列。$mathcal{A}_w$中区域的个数小于等于在

    C++11智能指针之weak_ptr详解

    `weak_ptr`可以用来保存对被观察对象的引用,确保在被观察对象销毁后,观察者能正确地处理这一情况。 总结,`weak_ptr`是C++11中解决循环引用问题的关键工具,它提供了安全地观察和访问对象的方式,而不影响其生命...

    A Weak Convergence Approach to the Theory of Large Deviations

    总之,《A Weak Convergence Approach to the Theory of Large Deviations》是一本详尽的大型偏差理论教材,它不仅介绍了该理论的基础知识和核心概念,还通过弱收敛方法,为读者提供了一种分析和处理非常小概率事件...

    The strength of weak learnability.pdf

    《弱学习能力的力量》 这篇论文探讨了在无分布假设(PAC)学习模型中提升假设输出准确性的难题。在机器学习中,一个概念类如果能够通过从未知概念的示例源获取信息,使得学习算法在高概率下产出几乎在所有实例上都...

    弱关系的力量The strength of weak ties

    研究发现:其实与一个人的工作和事业关系最密切的社会关系并不是“强关系”,而常常是“弱关系”。“弱关系”虽然不如“强关系”那样坚固(金字塔),却有着极快的、可能具有低成本和高效能的传播效率。

Global site tag (gtag.js) - Google Analytics