Java 引用
1. Java 有几种引用?(单选)答案:B java将引用分为了强引用、软引用、弱引用、虚引用四种,引用强度一次减弱。
- 5
- 4
- 3
- 2
- 1
每种编程语言都有自己操作内存中元素的方式,在C和C++中是通过指针,而在java中是通过引用,在Java中一切都是对象,但我们操作的实际是对象的一个引用,java将引用分为了四种类型,强引用、软引用、弱引用、虚引用。
有这样一类对象:当内存空间还足够,则可保留在内存中;如果内存空间在gc之后还是非常紧张,则可抛弃这些对象。很多系统的缓存功能适合这样的场景,所以jdk1.2以后
java将引用分为了强引用、软引用、弱引用、虚引用四种,引用强度一次减弱。
- 强引用:类似Object a=new Object()这类,永远不会被回收。
StringBuffer buffer = new StringBuffer();
- 软引用:SoftReference,当系统快要发生内存溢出异常时,将会把这些对象列入回收范围进行二次回收,如果这次回收还是没有足够内存,则抛出内存溢出异常。用来描述一些非必须,但仍有用的对象。内存足够时,软引用对象不会被回收,只有在内存不足时,系统会回收软引用对象,通常用于实现缓存。
Drawable drawable = new BitmapDrawable(bitmap);
SoftReference<Drawable> soft = new SoftReference<Drawable>(drawable);
if(soft!=null){
view.setImageResource(soft.get())
}当需要加载大图时,可以使用软引用,通过get()方法,获取图片对象,如果当前内存不足,则软引用会被回收,避免内存溢出发生。 - 弱引用:比软引用更弱,活不过下一次gc。无论当前内存是否足够,下一次gc都会被回收掉。
String str = new String("abc");
WeakReference<String> abcWeakRef = new WeakReference<String>(str); - 虚引用:又叫幻引用,最弱,一个对象时候有虚引用的存在,不会对它的生存时间构成影响,唯一目的就是能在这对象被回收以后收到一个系统通知。
要爱上写总结,不断的总结。
不断地反省、提升、改变自己。
简单、专注、持久。