来自 http://www.iteye.com/topic/334692
J
ava 2
平台中引入
java.lang.ref
包(其中包含
SoftReference
、
WeakReference
、
PhantomReference
和
ReferenceQueue
类)。
SoftReference
、
WeakReference
、
PhantomReference
都是弱引用,他们的强弱程度依次是
SoftReference-> WeakReference->PhantomReference
(由强到弱)。
-
SoftReference
类
软引用
的原理是:在保持对对象的引用时保证在
JVM
报告内存不足情况之前将清除所有的软引用。关键之处在于,垃圾收集器在运行时可能会(也可能不会)释放软可及对象。对象是否被释放取决于垃圾收集器的算法以及垃圾收集器运行时可用的内存数量。
-
WeakReference
类
垃圾收集器运行时如果碰到了弱可及对象,将释放
WeakReference
引用的对象。然而,垃圾收集器可能要运行多次才能找到并释放弱可及对象。
-
PhantomReference
类
PhantomReference
类只能用于跟踪对被引用对象即将进行的收集。同样,它还能用于执行
pre-mortem
清除操作。
PhantomReference
必须与
ReferenceQueue
类一起使用。需要
ReferenceQueue
是因为它能够充当通知机制。当垃圾收集器确定了某个对象是虚可及对象时,
PhantomReference
对象就被放在它的
ReferenceQueue
上。将
PhantomReference
对象放在
ReferenceQueue
上也就是一个通知,表明
PhantomReference
对象引用的对象已经结束,可供收集了。这使您能够刚好在对象占用的内存被回收之前采取行动。
-
ReferenceQueue
类
当某个弱引用对象的可达性被垃圾搜集器改变或清除后或将要清除时,会被放入对应的
ReferenceQueue
中(如果存在对应的引用队列的话)。
总结
弱引用机制是和垃圾回收机制紧密相关的,实际上就是用来和垃圾回收器交互的一个手段。目的是为了让垃圾回收器在适当的时候回收掉一些不需要的对象引用,释放内存,从而使
Java
的内存管理机制更加高效。
参考资料
Understanding Weak References
学习如何有效地使用
SoftReference
、
WeakReference
和
PhantomReferen
ce
用软引用阻止内存泄漏
分享到:
相关推荐
总结,通过理解Web服务的基础概念和特性,以及掌握Java Web服务的创建和C#中的调用方法,开发者可以有效地实现跨平台的应用集成。这种技术对于构建分布式、可扩展的系统至关重要,尤其在企业级应用中,能够充分利用...
引用(Reference)类型 52 存储器分配和布局 53 this引用 55 Java编码约定 56 运算符的优先级 58 升级和表达式的类型转换 62 独立实践 70 第五章:数组 71 学习目标 71 数组的描述 72 创建数组 72 多维数组 78 拷贝...
*JAVA 中的变量可以是基本数据类型(primitive types)或引用类型(reference types) *基本数据类型包括整数(int)、浮点数(float)、字符(char)等 *引用类型包括数组、字符串、对象等 二、运算符 *JAVA 中的...
Java是一种广泛使用的面向对象的编程语言,它以其强大的功能、简单易学的语法以及丰富的类库而受到程序员的喜爱。在Java中,数据类型是编程的基础之一,它定义了变量所能够存储的数据种类。本文将详细讲解Java中的...
Java具有简单性、面向对象、健壮性、安全性和平台独立性等特点。 ### 2. Installation(安装) #### 2.1 Installation des JDK(安装JDK) Java Development Kit (JDK) 是Java开发的基础工具包,包含了编译、调试和...
**总结** Spring Reference(中文版)文档涵盖了 Spring 框架的各个方面,包括核心概念、Web 开发、数据访问、安全、分布式系统支持等。通过阅读这份文档,开发者可以全面了解 Spring 并熟练运用其各项功能,以构建...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和...总结来说,"JAVA基础学习课件,菜鸟篇"将涵盖以上所有内容,逐步引导初学者掌握Java语言的基础知识,为后续深入学习和实际项目开发打下坚实的基础。
根据给定的文件信息,以下是对“Spring-LDAP”参考文档的知识点总结与扩展: ### Spring-LDAP概述 Spring-LDAP是Spring框架的一部分,专注于提供与轻量级目录访问协议(LDAP)集成的功能。它简化了开发人员在Java...
Java基础知识点总结 Java是Sun Microsystems公司推出的编程语言,具有跨平台、面向对象、简单易学等特点。 Java语言的基本组成部分包括Java虚拟机(JVM)、Java开发工具包(JDK)和Java运行时环境(JRE)。 Java...
总结,.NET调用Java Web服务的核心在于理解Web服务的工作原理,生成正确的代理类,以及正确地实例化和调用服务方法。通过这种方式,可以充分利用.NET的开发环境,同时利用Java Web服务的功能,实现跨平台的集成和...
### Spring Framework 2.0.6 - 关键知识点解析 #### 一、Spring框架概览与...以上是Spring 2.0.6版本的一些关键知识点总结,这些知识点覆盖了Spring框架的核心概念和技术细节,对于理解和使用Spring框架具有重要意义。
构建简单的JavaServer Faces应用程序 - **应用程序概述**:本章介绍了如何构建一个简单的JSF应用程序,包括必要的文件和配置。 - **JSFReg 应用程序文件**:涵盖了项目中需要的所有文件,例如JSP页面、配置文件等...
简单来说,只要存在强引用指向某对象,该对象就处于可达状态,即不可被回收。 **示例代码**: ```java String str = new String("hello"); // 创建一个强引用 ``` 在这个例子中,`str`是一个指向字符串"hello"的强...
面向对象为Java提供了强大的抽象能力和代码组织方式,而引用则使得对象之间的交互变得简单高效。对于初学者来说,深刻理解这些概念是非常必要的,这将有助于编写出更加健壮和可维护的Java程序。