在研究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(){