`
lvjun106
  • 浏览: 438222 次
  • 性别: Icon_minigender_1
  • 来自: 芜湖
社区版块
存档分类
最新评论

JAVA弱引用

    博客分类:
  • JAVA
阅读更多

什么是JAVA弱引用

简单来讲就是不保证不被垃圾回收器回收的引用地址。所以这个还是和垃圾回收器有关,那什么样的地址会被垃圾回收器回收呢?在堆中没有强引用链关联的内存地址将被垃圾回收器回收,回收之前将调用finalize()方法。

那么String s = "abc",就可以称之为强引用,等s = null。垃圾回收器就会在某个时刻自动将"abc"占用的内存回收掉。

而弱引用(WeakReference)其生命周期是比较短暂,尽管在那个时刻此地址还关联到一个变量地址,但是垃圾回器依然会执行清理命令,回收地址。

在JDK中用的比较多的有WeakHashMap,

弱引用最适宜的地方有:占用大量内存,但通过垃圾回收功能回收以后很容易创建。比如近期项目中session生命周期内的一个起缓存用的变量,此变量是记录关联到当前用户的一些汇率信息,因为一次加载比较多,而且取值频繁,所以用了WeakHashMap。一来如果用户一段时间不触发应用的话,内存自动会被清理,二来取值也方便,就是从数据库中直接取出再放入HashMap中。

最后附上一篇写的不错的文章,文中还涉及到了软引用和虚引用及一些代码案例。

http://www.233.com/Java/jichu/20070320/131115654.html

 

最后再加上短弱引用和长弱引用

Short

垃圾回收器回收对象后,短弱引用的目标自动变为NULL。弱引用本身是托管对象,和任何其它托管对象一样需要经过垃圾回收。短弱引用是WeakReference对象默认的构造函数。

Long

调用对象的finalize方法后,会保留长弱引用。这样,你就可以重新创造该对象,但该对象仍处理不可预知的状态。要使用长弱引用,要在WeakReference构造函数中指定true

如果对象的类型没有finalize方法,则自动应用弱引用功能。

分享到:
评论

相关推荐

    java弱引用

    Java 弱引用 Java 弱引用是一种特殊类型的引用,它允许垃圾回收器在某些情况下回收对象,而不是像强引用那样坚持对象的存在。弱引用是 Java.lang.ref.WeakReference 类的实例,它们提供了一种方式来引用对象,而不...

    详解 JAVA 弱引用

    "JAVA 弱引用详解" JAVA 弱引用是JAVA语言中的一种特殊的引用类型,它使用WeakReference类来实现。弱引用是一种非必需对象的描述,它比软引用更弱。在发生GC时,只要发现弱引用,不管系统堆空间是否足够,都会将...

    详解Java弱引用(WeakReference)的理解与使用

    Java 弱引用(WeakReference)的理解与使用 Java 中的弱引用(WeakReference)是一种特殊的引用类型,它可以帮助我们更好地管理内存和避免内存泄漏。在 Java 中,当一个对象被创建时,它被放在堆(Heap)中。当垃圾...

    10分钟带你理解Java中的弱引用

    Java中的弱引用是一种特殊的引用类型,它在内存管理中扮演着重要的角色,特别是在避免内存泄漏和优化资源使用方面。本文将从三个方面详细解释弱引用:What(定义)、Why(使用原因)和How(使用方法)。 一、What...

    Java弱引用实现源码-jack-compiler:jack语言编译器

    Java弱引用实现源码jack-编译器 效果 演示1: class Main { function void main () { String s; Output. printString ( " Hello, world! " ); Output. println (); Output. printString ( " What's your name? " ); ...

    Java弱引用与WeakHashMap

     《Java 理论与实践: 用弱引用堵住内存泄漏》一文也指出了使用全局的Map作为缓存容器时发生的内存泄露问题,介绍了如何使用hprof工具来找出内存泄露,并分析了如何使用弱引用来防止内存泄露,还分析了

    Java弱引用实现源码-Chromium_doc_zh:Chromium中文文档,学习google家的架构

    弱引用实现源码 Chromium_doc_zh Chromium中文文档 for 翻译之加强对android webview理解,同时作为架构设计的学习。 还未完全完成,不断更新ing,欢迎star gitbook地址: 适合阅读,可以导出pdf github地址: 翻译...

    Java弱引用实现源码-coding-guide_i3geek:一名JAVA程序员,将自己的编程学习之路做以总结并进行分享。内容包括但不限于数

    弱引用实现源码 程序员修炼秘籍(未完) 一名JAVA程序员,将自己的编程学习之路做以总结并进行分享。内容包括但不限于数据结构、算法、数据库、操作系统、计算机网络等多方面。 博文: 目前先暂列目录,内容在逐渐...

    Java中弱引用软引用虚引用及强引用的区别Java开发Ja

    强引用、弱引用、软引用和虚引用是四种不同的引用强度,它们在垃圾回收机制中扮演着不同的角色。了解这些引用类型对于优化内存使用、防止内存泄漏以及合理地控制对象生命周期至关重要。 1. **强引用(Strong ...

    Java弱引用实现源码-DataStructure::kiss_mark::kiss_mark:数据结构、算法总结、学习算法的时间复杂度、空间复杂度、分析算法特点以及应用、Java面

    弱引用实现源码 数据结构与算法学习之路 下面的算法都打包在一个应用当中,你只需要下载安装即可,里面有算法的介绍,时间复杂度,空间复杂度,代码示例 二叉树的遍历 二叉排序树 红黑树 AVL树 图的邻接表存储构成图...

    Java中的引用类型详解:强引用、软引用、弱引用与虚引用

    从JDK 1.2版本开始,Java引入了四种不同级别的引用:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)。这些引用类型提供了灵活的内存管理策略,允许...

    java 常见的四种引用

    在Java中,为了更好地管理对象的生命周期,从JDK 1.2开始引入了四种不同级别的引用类型:强引用、软引用、弱引用和虚引用。每种引用类型都有其特定的应用场景,通过灵活运用这些引用类型,开发者可以在内存管理和...

    Java中的软引用弱引用和虚引用.docx

    ### Java中的软引用、弱引用和虚引用详解 #### 一、引言 在Java开发过程中,特别是Android应用开发中,经常会遇到一个普遍的问题——内存溢出(OutOfMemory Error,简称OOM)。这个问题往往与如何有效地管理内存...

    Java 7之基础 - 强引用、弱引用、软引用、虚引用1

    然而,为了更好地控制内存,Java提供了不同类型的引用:强引用、弱引用、软引用和虚引用。这些引用类型允许程序员在特定场景下干预垃圾收集过程,以达到更精细的内存管理。 1. **强引用(Strong Reference)** - *...

    Android中的软引用和弱引用

    在这个过程中,软引用(Soft Reference)和弱引用(Weak Reference)是两种非常重要的工具,它们可以帮助我们避免内存泄漏,提高应用的内存效率。下面我们将深入探讨这两种引用类型及其在Android中的应用。 首先,...

    十分钟理解Java中的弱引用编程开发技术共3页.pdf.z

    Java中的弱引用编程开发技术是Java内存管理的一个重要概念,对于优化内存使用和防止内存泄漏具有关键作用。本文将深入探讨这一主题,帮助你在这十分钟内建立起对弱引用的理解。 首先,我们需要知道Java的内存区域...

    Java中的强软弱虚引用

    为了更好地理解和控制对象的生命周期,Java提供了四种不同类型的引用:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)以及虚引用(Phantom Reference)。每种引用都有其特定的...

    Java 理论与实践:用弱引用堵住内存泄漏

    本月,负责保障应用程序健康的工程师 Brian Goetz 探讨了无意识的对象保留的常见原因,并展示了如何用弱引用堵住泄漏。  要让垃圾收集(GC)回收程序不再使用的对象,对象的逻辑 生命周期(应用程序使用它的时间...

    Java的四种引用

    从JDK 1.2版本开始,Java引入了一种更为精细的引用类型管理机制,通过四种不同的引用类型:强引用、软引用、弱引用和虚引用,让开发者能够更加灵活地控制对象的生命周期。这种机制不仅提升了Java应用程序对内存使用...

    Java中强引用,软引用,弱引用概念解析

    Java 中强引用、软引用、弱引用概念解析 Java 中强引用、软引用、弱引用是 Java 语言中三种不同的引用类型,每种引用类型都有其特点和应用场景,以下是对这三种引用类型的详细解释: 强引用 强引用是使用最普遍的...

Global site tag (gtag.js) - Google Analytics