softreference weakreference 学习总结

package cm;

import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;
import java.util.WeakHashMap;

import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;

public class test201804010 {

	public static void main(String[] args) {
		// 1在集合中判断两个对象是否相等,首先比较两个对象的hashcode方法,其次比较两个对象的equals方法,注意次序。有一个不等,则两个对象不想等。
		// P.sopl(new String("hello").hashCode()+"");
		// P.sopl(new String("hello").hashCode()+"");//在stirng
		// 中string类从写了hashcode,此方法是基于内容的。

		// Reference接口的三个子类softReference只有在jvm、weakRefereach、Phantomreference。SoftReference比WeakReference生命力更强,当JVM的内存不吃紧时,即使引用的对象被置为空了,Soft还可以保留对该对象的引用,此时的JVM内存池实际上还保有原来对象,只有当内存吃紧的情况下JVM才会清除Soft的引用对象,并且会在未来重新加载该引用的对象。
		// 而WeakReference则当清理内存池时会自动清理掉引用的对象。
		//softreference(软引用)一个对象具有软引用,在内存空间足够的时候进行垃圾回收,垃圾回收不会回收该对象,只有在内存空间不足的情况下
		//垃圾回收器才会将这个对象回收,在将来需要用到此引用时,恢复对象,也就是说如果有软引用指向一个对象,在内存紧张的时候,该对象还是会被回收的。
		// int i=0;
		// A a=new A();
		// a.str="hello A";
		// SoftReference<A> softr=new SoftReference<A>(a);
		// while(softr.get()!=null) {
		// P.sopl("softreference"+i);
		// i++;
		// if(i%10==0) {
		// System.gc();
		// P.sopl("system.gc()");
		// }
		// }
		
		//weakreference(弱引用)当垃圾回收器扫描到弱引用的对象时,不管内存空间是否充足,都将此对象进行回收。也就是说一个对象只有一个弱引用,不管在何时垃圾回收器都能将它回收。
		// WeakReference<A> weakr=new WeakReference<A>(b);
		// while(weakr.get()!=null) {
		// i++;
		// if(i%10==0) {
		// System.gc();//这个方法只是显示通知垃圾回收器进行垃圾回收,垃圾何时回收是由jvm决定的,回收动作发生的条件有两个,1.当程序空闲时,即没有应用线程在运行2.java堆空间不足时。
		// P.sopl("system.gc()"+b.toString());
		//
		// }
		// }//这里当然这个循环方法失败了,因为垃圾回收器没有执行回收。
		
		//对于强引用,也就是我们平时定义的对象,默认采用的强引用,如果指向该引用的个数不为0,该对象永远不会被回收。
		

		//什么是weakhashmap呢,就是将weakreference应用到hashmap上,WeakHashMap 内部是通过弱引用来管理entry的,弱引用的特性对应到 WeakHashMap 上意味着什么呢?将一对key, value放入到 WeakHashMap 里并不能避免该key值被GC回收,除非在 WeakHashMap 之外还有对该key的强引用。
		//keys[i]=k;//keys是一个数组,keys[i]是一个强引用,指向k,在把k v当作一个entry存入weakhashmap类型的map中去,这样k就在外具有了一个强引用,在map内具有弱引用。
		//map.put(k,v)
	}

}
class A{
	public String str;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值