CachedIntrospectionResults源码研究(一)

本文探讨了CachedIntrospectionResults的源码,重点关注其使用WeakHashMap来避免内存泄漏的问题。通过对比HashMap和WeakHashMap的实现,解释了为何WeakHashMap能有效地进行垃圾回收。在CachedIntrospectionResults中,当类加载器不同或不持有BeanInfo等强引用时,可以防止内存溢出。分析了类加载器和元数据的关系对内存管理的影响,并指出在特定条件下CachedIntrospectionResults如何实现自动回收。
摘要由CSDN通过智能技术生成

在研究spring2.5中的CachedIntrospectionResults的源码之前,必须明白几个概念,希望大家共同探讨一下,谢谢。

首先CachedIntrospectionResults中有一行代码:

static final Map classCache = Collections.synchronizedMap(new WeakHashMap());

首先看看WeakHashMap,根据jdk帮助文档上所说

WeakHashMap 中的值对象由普通的强引用保持。因此应该小心谨慎,确保值对象不会直接或间接地强引用其自身的键,因为这会阻止键的丢弃。注意,值对象可以通过WeakHashMap 本身间接引用其对应的键;这就是说,某个值对象可能强引用某个其他的键对象,而与该键对象相关联的值对象转而强引用第一个值对象的键。处理此问题的一种方法是,在插入前将值自身包装在WeakReferences 中,如:m.put(key, new WeakReference(value)),然后,分别用get 进行解包。

 

首先看看HashMap的实现:

package test;

import java.util.HashMap;
import java.util.Map;

public class TestHashMap {
 static class Key{
     private int[][] data = new int[50][50]; 
     public void finalize(){
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值