`
Tyrion
  • 浏览: 261400 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

强引用、软引用、弱引用、虚引用

    博客分类:
  • Java
 
阅读更多

简单说,强引用就是一般的引用,该类对象在JVM的运行过程中将会一直占用内存空间,即使GC也不会释放空间。

软引用(SoftReference)是在GC时发现内存空间不足后将会释放占用的内存空间。

弱引用(WeakReference)是在GC时直接释放内存空间。

虚引用(PhantomReference)很奇怪的是其get方法永远返回null,提供这个概念可以更精细的控制对象的回收过程。(反正我至今没有碰到这种业务场景,据说手机开发中有时用到这个

 

 

这些概念早在JDK1.2里面就有了,只是最近在看一些框架的源代码时碰到这些概念,这些概念提出的目的就我个人理解是为了让程序员可以稍微控制一些JVM的GC,但这种控制不可能像C++、C之类能精细到直接的delete一块数据结构这种程度,这些只是提示JVM,当前内存中的某些对象可以被回收,已经被回收的时机等等(注意,只是提示JVM,不是要求,具体运行情况要看JVM的具体GC策略)。

 

其实想想也是,不需要自己手动释放内存是Java诞生之初与其它语言区分的一个显著特征,提供这些概念,也是完全手动控制与完全JVM控制两种策略之间一个权衡吧。

 

TMD,技术的东西写着写着就会往philosophy里靠。。。对了,上个月看到一本书《操作系统的哲学原理》,名字有点意思,虽然对国内IT翻译人的文笔不怎么报信心,但边看边骂的感觉其实挺爽的。

分享到:
评论

相关推荐

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

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

    强引用、软引用、弱引用、虚引用1

    从Java SE2开始,Java引入了四种不同类型的引用:强引用、软引用、弱引用和虚引用,它们各自具有不同的特点和用途,有助于程序员更精细地控制对象的生命周期,并优化垃圾回收过程。 1. 强引用(Strong Reference) ...

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

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

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

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

    Java中的强软弱虚引用

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

    Java对象的强、软、弱和虚引用1

    Java对象的引用类型是Java内存管理中的重要概念,特别是在JDK 1.2及后续版本中引入了四种级别的引用:强引用、软引用、弱引用和虚引用,以提供更精细的控制对象生命周期的能力。 1. **强引用(StrongReference)**: ...

    referenceInJava:Java强引用,软引用,弱引用以及虚引用测试项目

    这个"referenceInJava"项目专注于探讨四种不同类型的引用:强引用、软引用、弱引用和虚引用。这些引用类型与垃圾收集(Garbage Collection, GC)机制密切相关,对于优化内存使用和防止内存泄漏至关重要。 1. **强...

    JVM面试题分享给需要的同学.zip

    JVM 垃圾回收 1.JVM的4种垃圾回收算法 ...10.强引用、软引用、弱引用、虚引用的区别? 1)强引用 软引用 弱引用 虚引用 11.堆栈的区别是什么? 12 对象的GC年龄最大多少?存储在哪 13 为什么GC分代年

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

    - 单例模式:可以在单例模式中使用弱引用来替代传统的强引用,使得单例对象能够在不再需要时被及时回收。 - 缓存管理:在某些不需要长期保持数据的情况下,可以使用弱引用作为缓存策略的一部分。 ##### 示例代码 `...

    强,软,弱,虚1

    本文将深入探讨四种引用类型:强引用、软引用、弱引用和虚引用。 首先,我们来理解强引用(Strong Reference)。强引用是最常见的引用类型,它代表了程序中的普通对象引用。当一个对象被强引用指向时,该对象被认为...

    Java中弱引用和软引用的区别以及虚引用和强引用介绍

    强引用、弱引用、软引用和虚引用这四种引用类型提供了不同的对象生命周期管理策略。下面将详细介绍这些引用的区别及其应用场景。 1. **强引用(Strong Reference)** - 强引用是最常见的引用类型,如普通变量引用。...

    强应用软引用弱引用与垃圾收集的关系1

    本文将深入探讨强引用、软引用、弱引用以及幻象引用这四种引用类型,以及它们与垃圾收集的关系。 1. **强引用(Strong Reference)**: - 强引用是Java中最常见的引用类型,它代表了一个对象的直接访问路径。只要...

    Android中的软引用和弱引用

    由于弱引用不会阻止垃圾收集,所以使用弱引用的对象在被创建后会很快变得不可达,除非有其他强引用指向它。这在一定程度上保证了内存的有效利用,避免了不必要的内存占用。 在Android中,软引用和弱引用常用于图片...

    android安卓图片的三级缓存DEMO 三层缓存示例下载 强引用 软引用

    "android安卓图片的三级缓存DEMO 三层缓存示例下载 强引用 软引用"这个资源提供了对图片加载优化的一个常见实践——三级缓存机制的实现。下面将详细讲解这一知识点。 首先,我们来理解什么是图片的三级缓存。在...

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

    Java 中强引用、软引用、弱引用概念解析 Java 中强引用、软引用、弱引用是 Java 语言...Java 中的强引用、软引用、弱引用和虚引用四种引用类型都有其特点和应用场景,选择合适的引用类型可以提高程序的性能和可读性。

    java四大引用

    java有四种引用类型:强引用、软引用、弱引用、虚引用 四大引用设计作用 ​ 因为java的内存分配和内存回收,都是由JVM去负责,一个对象是否可以被回收,主要看是否有引用指向此对象,即可达性分析 设计目的: 可以让...

    弱引用强引用支持区别

    弱引用强引用支持区别

    软弱虚引用_转

    Java中的引用类型分为四种级别,分别是强引用、软引用、弱引用和虚引用。在JDK1.2版本之前,对象的生命周期完全由强引用决定,即只要还有强引用指向一个对象,该对象就不会被垃圾回收器回收。但这种处理方式过于简单...

    Bitmap图片的三级缓存DEMO 三层缓存 强引用 软引用DEMO

    这里我们将深入探讨“三级缓存”、“强引用”和“软引用”这三个核心概念,并通过BitmapUtils三层缓存的实现来阐述它们如何协同工作。 首先,我们来看“三级缓存”。在Android应用中,图片缓存通常分为三部分:内存...

    java弱引用

    在 Java 中,引用可以分为四类:强引用、软引用、弱引用和虚引用(也称为精灵引用)。弱引用是其中的一种,它们允许垃圾回收器在某些情况下回收对象,而不是像强引用那样坚持对象的存在。 弱引用的工作原理是,当...

Global site tag (gtag.js) - Google Analytics