一丶引用分类(面试)
强引用:StongReference:引用指向对象,gc(Garbage collection)运行时不回收
软引用:SoftReference gc运行时可能回收(jvm内存不够)
弱引用:WealReference gc运行时立即回收
虚引用:PhantomReference 类似于无引用,主要跟踪对象被目收的状态,不能单独使用,必须与引用队列(ReferenceQueue) 联合使用
二、三个Map接口实现类
1.WeakHashMap:键为弱引用
2.ldentityHashMap:健比较地址去重,注意常量池的对象
3.EnumMap救举map,要 求键为枚举的值
package Others;
import java.util.WeakHashMap;
/***
* WeakHashMap键为弱类型
* gc运行立即被回收
*
* @author zw
*
*/
public class WeakHashMapDemo {
public static void main(String[] args){
WeakHashMap<String,String> whs = new WeakHashMap<String,String>();
//常量池对象不会被回收
whs.put("zzz", "zzz");
whs.put("xxx", "xxx");
//gc运行已被回收
whs.put(new String("a"), "c");
whs.put(new String("sssss"), "csdasd");
System.gc();
System.runFinalization();
System.out.println(whs.size());
}
}
package Others;
import java.util.IdentityHashMap;
/***
* IdentityHashMap 键比较地址去重
* @author zw
*
*/
public class IdentityHashMapDemo {
public static void main(String[] args){
IdentityHashMap<String,String> it = new IdentityHashMap<String,String>();
//常量池找那个的"a"
it.put("a", "good");
it.put("a","best");
System.out.println(it.size());
}
}
package Others;
import java.util.EnumMap;
/***
* EnumMap
* 要求键为枚举
* @author zw
*
*/
public class EnumMapDemo {
public static void main(String[] args) {
EnumMap<Season,String> map = new EnumMap<Season,String>(Season.class);
map.put(Season.SPRING, "春困");
map.put(Season.SUMMER, "夏无力");
map.put(Season.AUTUMN, "秋乏");
map.put(Season.WINTER, "冬眠");
System.out.println(map.size());
}
}
enum Season{
SPRING,SUMMER,AUTUMN,WINTER;
}