【高级java程序员应该知道的小知识】weak reference


本篇态度: simple & stupid


weak reference

Weak reference objects, which do not prevent their referents from being made finalizable, finalized, and then reclaimed. Weak references are most often used to implement canonicalizing mappings.

弱引用不会阻止其引用的对象变成finalizable、finalized状态并最终被GC回收。

finalizer方法:在GC回收对象前执行此方法,一般此方法用于手工释放其它系统资源。

finalizable对象:jvm的GC最终会执行其finalizer方法。

finalized状态:对象的finalizer方法已被自动执行。

用法:

    WeakReference<Class<?>> ref = map.get(name);
    if (ref != null) {
       clazz = ref.get();
    }

用途:

一般配合WeakHashTable做缓存时使用,不想手工关注某个对象的释放,也不想因为忘记此对象的释放而造成内存泄露的话就用weak reference吧。

【版权所有@foreach_break 转载请注明出处 博客地址http://blog.csdn.net/gsky1986

时间: 2024-10-23 00:27:20

【高级java程序员应该知道的小知识】weak reference的相关文章

【高级java程序员应该知道的小知识】 volatile

本篇态度: simple & stupid volatile 用法: private volatile Service.STATE state; 优点: 比其他的锁机制(synchronized.lock)简单: 不阻塞: 对volatile修饰的变量允许并发读. 谨记: Java Memory Model ensures that all threads see a consistent value for the variable volatile提供变量修改后对其他线程的可见性. 变量被一

【高级java程序员应该知道的小知识】 WeakHashMap

本篇宗旨:simple & stupid WeakHashMap (弱引用的哈希表) Hash table based implementation of the Map interface, with weak keys. An entry in a WeakHashMap will automatically be removed when its key is no longer in ordinary use. More precisely, the presence of a mapp

高级Java程序员--职责要求

描述: 一哥们离职找工作,最近聊了聊面试待遇要求一类的事情,有些感触. 在一个公司呆的时间长了,对市场上对开发的要求已经不那么敏感了,也不知道人家要求哪些技能.一个公司的业务是有限的,呆了2年,3年,4年之后,知识面可能就狭隘了: 4.5年的程序员市场上平均待遇是多少也不清楚,问问好朋友聊聊也只知道几家的标准,对于大多数人,工资是安身立命之本,不可不察. 想到自己本身就是最数据采集与分析的,就蹦出来个想法:采集点招聘信息样本,做下简单的统计,也许会有所收获.. 正好最近也不是很忙,经过一番折腾,

JAVA程序员需要学习哪些基础知识?

极客营认为想要成为一个合格的java程序员,必须需要牢固的基础,这样在未来接触新的知识的时候,才能快速吸收,极客营认为基础不牢固的程序员,随时都会被新的知识和技术所淘汰,下盘不稳风一吹就倒,那么作为一个合格的java程序员应该具备哪些知识呢?今天极客营就来和大家分享java高手之路上的必备基础知识: 一.面向对象的知识:JAVA是一个面向对象的开发语言,因此熟悉面向对象对学习JAVA很有必要,您要了解:什么是对象,什么是类;什么是封装,什么是多态,什么是继承;什么是抽象类,什么是接口.了解了概念

Java程序员进阶路线-高级java程序员养成

1. 引言 搞Java的弟兄们肯定都想要达到更高的境界,用更少的代码解决更多的问题,用更清晰的结构为可能的传承和维护做准备.想想当初自己摸着石头过河,也看过不少人介绍的学习路线,十多年走过来多少还是有些收获.现通过自身经历总结一篇文章,供弟兄们参考. 2.  用好正在用的框架 在已经加入的团队中,和大家协作使用团队已选好的框架.不管框架优劣与否,特点如何,选择了它必然有一定的道理.并且能够在业界经久流行的框架也一定有它的优秀之处. 使用框架第一步是熟悉,可能通过复制和修改前人的代码来实现新的功能

高级Java程序员值得拥有的10本书

Java是时下最流行的编程语言之一.市面上也出现了适合初学者的大量书籍.但是对于那些在Java编程上淫浸多时的开发人员而言,这些书的内 容未免显得过于简单和冗余了.那些适合初学者的书籍看着真想打瞌睡,有木有.想找高级点的Java书籍吧,又不知道哪些适合自己. 别急,雪中送炭的来了:下面我将分享的书单绝对值得拥有.ps,我也尽力避免列出为特定软件或框架或认证的Java书,因为我觉得那不是纯Java书. 1.<Java in a Nutshell>(Java技术手册) 与其说是必读书籍,还不说是参

2019年高级Java程序员面试题汇总

目录 JDK Dubbo Zookeeper Strut2 Spring系列 Redis系列 Mysql系列 Java多线程 消息中间件 线程池 事物 JVM 设计模式 其他 程序设计 基础知识 编程题 面试技术外的问题 引言:随着金九银十的到来,回首在经历了两周的跳槽求职路后,终于成功拿到offer,距今已经入职快一个月了,因此,这几天抽空将之前的面试题做了个汇总,一方面自己以后回顾学习用,一方面为大家奉送上一份秋收的福利. JDK jdk1.8版本后的新特性有哪些? 如何避免空指针异常? D

[转载]Java程序员掌握的10大项知识体系--精通太难说出口

1.语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正. 2.命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer. HtmlConverter.jar. java.javac.javadoc.javap.javaw.native2ascii.serialver,如果这些命令你没有全部使用过,那么你对java实际上还很不了解. 3.工具:必须至少熟练使用一种IDE的开发工具,例如Eclip

Java程序员必须掌握的线程知识-Callable和Future

创建线程的两种方式,一种是直接继承Thread,另外一种就是实现Runnable接口.这两种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果.如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦.而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果. 一.Runnable接口 先看一下java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法: publi