如果你想写一个 Java 程序,观察某对象什么时候会被垃圾收集的执行绪清除,你必须要用一个 reference 记住此对象,以便随时观察,但是却因此造成此对象的 reference 数目一直无法为零, 使得对象无法被清除。
java.lang.ref.WeakReference
不过,现在有了 Weak Reference 之后,这就可以迎刃而解了。如果你希望能随时取得某对象的信息,但又不想影响此对象的垃圾收集,那么你应该用 Weak Reference 来记住此对象,而不是用一般的 reference。
A obj = new A();
WeakReference wr = new WeakReference(obj);
obj = null;
//等待一段时间,obj对象就会被垃圾回收
...
if (wr.get()==null) {
System.out.println("obj 已经被清除了 ");
} else {
System.out.println("obj 尚未被清除,其信息是 "+obj.toString());
}
...
在此例中,透过 get() 可以取得此 Reference 的所指到的对象,如果传出值为 null 的话,代表此对象已经被清除。
这类的技巧,在设计 Optimizer 或 Debugger 这类的程序时常会用到,因为这类程序需要取得某对象的信息,但是不可以 影响此对象的垃圾收集。
java.lang.ref.SoftReference
Soft Reference 虽然和 Weak Reference 很类似,但是用途却不同。 被 Soft Reference 指到的对象,即使没有任何 Direct Reference,也不会被清除。一直要到 JVM 内存不足时且 没有 Direct Reference 时才会清除,SoftReference 是用来设计 object-cache 之用的。如此一来 SoftReference 不但可以把对象 cache 起来,也不会造成内存不足的错误 (OutOfMemoryError)。我觉得 Soft Reference 也适合拿来实作 pooling 的技巧。
A obj = new A();
SoftRefenrence sr = new SoftReference(obj);
引用时
if(sr!=null){
obj = sr.get();
}else{
obj = new A();
sr = new SoftReference(obj);
}
分享到:
相关推荐
性能优化手册是一套java性能学习研究小技巧,包含内容:Java性能优化、JVM性能优化、服务器性能优化、数据库性能优化、前端性能优化等。 内容包括但不限于: String 性能优化的 3 个小技巧 HashMap 7 种遍历方式...
C++性能优化是一个复杂的主题,它涉及编译器、算法、语言特性、硬件架构以及操作系统等多个层面。性能优化的目标是提升软件执行效率,减少资源消耗,缩短响应时间,以及提高吞吐量。下面将详细介绍这些性能优化的...
在前端开发领域,性能优化是提升用户体验的关键环节。"前端性能优化与实践.zip"这个压缩包包含了一系列关于前端性能优化的深度文章和教程,涵盖了浏览器缓存机制、首屏加载优化、服务端渲染、事件处理策略、图片优化...
### 大型网站性能优化实战从前端网络CDN到后端大促的全链路性能优化 #### 一、基于用户体验的性能优化要素 在现代互联网应用中,用户体验是衡量一个网站成功与否的重要标准之一。良好的用户体验不仅仅体现在美观的...
MySQL性能优化金字塔法则 MySQL性能优化是指通过调整MySQL数据库的配置、优化数据库结构和查询语句等方式,提高MySQL数据库的性能和响应速度,以满足应用程序的需求。MySQL作为最流行的开源数据库之一,被广泛应用...
iOS性能优化 iOS是苹果公司开发的移动操作系统,广泛应用于iPhone、iPad、iPod touch等苹果设备上。随着移动设备的普及,为移动设备提供流畅稳定用户体验的重要性日益凸显,而性能优化是实现这一目标的关键步骤。...
VMware vSphere 6.7 性能优化最佳实践 VMware vSphere 6.7 是一款功能强大且流行的虚拟化平台,为用户提供了强大的虚拟化解决方案。然而,为了确保 VMware vSphere 6.7 的最佳性能,需要遵循一定的优化实践。本文将...
ORACLE SQL性能优化系列 ORACLE SQL性能优化是数据库管理员和开发者非常关心的一个话题。为了提高数据库的性能,ORACLE 提供了多种优化技术。下面我们将详细介绍 ORACLE SQL 性能优化系列中的一些重要知识点。 一...
《C++高效编程:内存与性能优化》是一本专注于C++编程语言内存管理和性能调优的书籍。本书深入探讨了如何在C++编程中高效地使用内存资源,以及如何进行性能优化,以编写出既高效又优雅的代码。 书籍作者Rene ...
资源名称:SQL Server性能优化与管理的艺术内容简介:本书共15章,分为三部分,第一部分(第1-2章)为概述部分,阐述SQLServer方面的“性能”及相关概念。并给出常规的性能及性能相关的问题侦测的“方法论”,读者...
前端性能优化探索 前端性能优化是当前互联网开发中的一个重要话题。随着互联网技术的快速发展,Web前端技术也逐渐成为了互联网开发的重要一环。然而,在如今这个追求极致体验的时代,我们不仅要实现业务需求,更...
"MySQL性能优化和高可用架构实践" 本书《MySQL性能优化和高可用架构实践》是一本详细介绍MySQL性能优化和高可用架构实践的书籍,旨在帮助读者提升MySQL数据库的性能和可靠性。本书的内容涵盖了查询优化的基本原则和...
达梦数据库性能优化 达梦数据库作为国产数据库市场占有率第一的高性能、高可靠性、高安全性、高兼容性大型关系型数据库管理系统,已经成功替代了Oracle,在电力、金融、电子政务、教育等行业领域得到了广泛的应用,...
在《Linux性能优化实战》案例中,我们深入探讨了如何利用Linux系统工具和技术来提升系统的运行效率和性能。Linux作为一款开源操作系统,其强大的可定制性和丰富的工具集使其成为性能优化的理想平台。以下是一些核心...
《C程序性能优化-20个实验与达人技巧》是一本深入探讨C语言程序性能提升的书籍,旨在帮助开发者理解程序执行效率的本质,掌握优化技巧,从而编写出更高效的代码。书中通过20个精心设计的实验,由浅入深地讲解了性能...
在前端开发领域,性能优化是提升用户体验和网站可访问性的重要环节。这本"前端性能优化原理与实践"小册子深入探讨了如何通过一系列技术手段优化前端页面,旨在帮助开发者构建更快、更流畅的Web应用。以下是该压缩包...
Unity性能优化 Unity性能优化是指在游戏开发中提高游戏性能的过程,包括优化CPU和GPU的使用,以提高游戏的帧率和画质。下面是 Unity性能优化的相关知识点: 1. Unity性能调试工具及使用方法 Unity提供了多种...
根据提供的文件信息,“ORACLE DATABASE 11G性能优化攻略_高清_美 Sam R Alapati.pdf”,我们可以推断出这份文档主要讲述了Oracle Database 11g版本中的性能优化策略和技术。下面将从多个角度来深入探讨Oracle ...
### 性能优化的核心概念与实践 #### 一、什么是性能优化? 性能优化是指通过一系列技术和方法提升系统或应用程序在处理任务时的速度、效率及稳定性等指标的过程。它旨在充分发挥硬件资源的优势,同时减少不必要的...