1、对象的强、软、弱和虚引用在JDK1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这..
分类:
编程语言 时间:
2015-05-04 15:46:54
阅读次数:
132
强引用:如果一个对象具有强引用,GC绝不会回收它;当内存空间不足,JVM宁愿抛出OutOfMemoryError错误;
软引用:如果一个对象具有软引用,当内存空间不足,GC会回收这些对象的内存,使用软引用构建敏感数据的缓存;
弱引用:如果一个对象具有弱引用,在GC线程扫描内存区域的过程中,不管当前内存空间足够与否,都会回收内存,使用弱引用 构建非敏感数据的缓存;
虚引用:如果一个对象仅持有虚引用,在任何时候都可能被垃圾回收,虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列联合使用,虚引用主要用来跟...
分类:
编程语言 时间:
2015-04-25 16:42:22
阅读次数:
291
Lrucache是Android4.0以后提供的一个用于缓存的类,这个类抛弃了原有的softReference(软引用)形式,因为android4.0以后虚拟机更倾向与回收软引用,也就是一旦虚拟机发现软引用,就会进行回收,这使得软引用变得不再可靠。
Lrucache的源码并不长,内部是使用LinkedHashMap map来存储缓存的键值对,下面我带大家一起看一下lrucache的源码,希望大家...
分类:
系统相关 时间:
2015-04-22 20:46:18
阅读次数:
153
强引用,软引用,弱引用,虚引用
强引用:
我们一般使用的就是强引用。垃圾回收器绝不会回收它。
当内存空间不足时Java虚拟机宁愿抛出OutOfMemoryError错误使程序异常终止,也不会回收具有强引用的对象来解决内存不足的问题
软引用:
如果一个对象具有软引用,那么当内存空间足够的时候GC就不会回收它,如果内存空间不足了,就会回收这些对象的内存空间。
弱引用...
分类:
其他好文 时间:
2015-04-21 16:13:49
阅读次数:
148
1、强引用(StrongReference) ??? ? ? ? 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: Object?o=new?Object();???//??强引用 当内存空间不足,Java虚拟机...
分类:
编程语言 时间:
2015-04-21 13:14:35
阅读次数:
183
Java中的SoftReference即对象的软引用。如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。使用软引用能防止内存泄露,增..
分类:
移动开发 时间:
2015-04-21 02:07:52
阅读次数:
166
package com.aguigu.l05_app.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
im...
分类:
其他好文 时间:
2015-04-20 20:57:05
阅读次数:
138
Java 中强引用, 软引用SoftReference,弱引用WeakReference,虚引用
Java当中的引用有四种:
1.强引用
平常我们用的最多的引用。 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。只...
分类:
编程语言 时间:
2015-04-19 18:01:03
阅读次数:
123
一、java中的四种引用简介
1、强引用:创建对象的引用,GC抛出OOM也不回收内存
2、软引用:在OOM之前回收内存
3、弱引用:在GC发现之后释放内存
4、虚引用(幽灵引用):使用后就释放
二、软引用的使用
1、用途:软引用是主要用于内存敏感的高速缓存,在jvm报告内存不足之前会清除所有的软引用,这样以来gc就有可能收集软可及的对象,可能解决内存吃紧问题,避免内溢出。
2、引用的...
分类:
编程语言 时间:
2015-04-18 16:16:22
阅读次数:
192
所有Android的开发者一定都遇到过内存溢出这个头疼的问题,一旦出现这个问题,很难直接确定我们的应用是那里出了问题,要想定位问题的原因,必须通过一些内存分析工具和强大的经验积累才能快速的定位到问题具体出现在那里。 基于移动开发具有的这个特性,本着尽量减少内存消耗的原则,以及我最近遇到的内存堆积(....
分类:
移动开发 时间:
2015-04-10 21:58:55
阅读次数:
170