一个列子演示java中软引用的回收时机
2017-04-04 21:39
232 查看
示例代码如下:
import java.lang.ref.SoftReference; /** * 软引用比弱引用强,如果一个对象只有软引用,那么当堆空间不足时候,才会被回收 * 该类用于演示软引用的这一性质 * 2017年4月4日 下午9:30:38 * @version v1.0 */ public class SoftRef { public static class Student { public int id; public String name; public Student(Integer id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "[id=" + id + ",name=" + name + "]"; } } public static void main(String... args) throws InterruptedException { Student u = new Student(1, "alexzanda"); SoftReference<Student> studentSoftRef = new SoftReference<Student>(u); u = null; System.out.println(studentSoftRef.get()); System.gc(); System.out.println("After GC:"); System.out.println(studentSoftRef.get()); System.out.println("After a big object allocate:"); byte[] b = new byte[1024 * 925 * 7];//分配一个大对象 System.gc(); System.out.println(studentSoftRef.get());//由于内存紧张,软引用会被清除 } }
本人是通过eclipse来运行该段代码的,在运行代码前,设置了如下虚拟机参数:
-Xmx10m -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintHeapAtGC -Xloggc:d://gc.log
代码运行结果如下
[id=1,name=alexzanda] After GC: [id=1,name=alexzanda] After a big object allocate: null
相关文章推荐
- 一个列子演示java中弱引用的回收时机
- 一个通过引用返回局部变量的列子
- 发现一个让JAVA拉极立即回收的方法!
- java中一个工程引用另一个工程的类
- c/c++转java的一个注意点:对象和对象引用
- 一个Web Project引用多个Java Project在Eclipse下的配置
- 一个超渲的的wpf列子(这个是引用别人的文章.)
- Java中软引用、弱引用和虚引用的使用方法示例
- java 传递参数 “引用是一种数据类型”,“参数是引用的一个拷贝”
- 中软面试(一):java写一个随机生成四位数的程序 每位数字不重复
- Java垃圾回收机制与引用类型
- Java垃圾回收机制与引用类型
- 浅谈Java中内部类引起的一个资源回收陷阱
- 关于java中软引用的理解
- 关于JAVA的引用和垃圾回收
- java 考察引用的一个例子
- 4、如何强制垃圾回收一个对象?(java)
- Java垃圾回收机制与引用类型
- java 中软引用和弱引用
- java的几种引用类型与垃圾回收(转)