示例代码如下:


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;}@Overridepublic 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中软引用的回收时机相关推荐

  1. 一个列子演示java中弱引用的回收时机

    示例代码如下 import java.lang.ref.WeakReference;/*** * 弱引用比软引用还要弱,在系统GC时候,只要发现弱引用,不管系统堆空间使用情况如何,都会将对象回收* 该 ...

  2. [转载] Java中如何引用另一个类里的集合_Java工程师面试题整理

    参考链接: 在Java中将预定义的类名用作类或变量名 花了一星期把学过的都整理一遍 尽量易懂,从基础到框架 最新版大厂面经汇总出炉,持续更新中 汇总完了上传网盘,设计到后端架构师的一切知识 如果没更新 ...

  3. java虚引用作用_深入理解Java中的引用(二)——强软弱虚引用

    深入理解Java中的引用(二)--强软弱虚引用 在上一篇文章中介绍了Java的Reference类,本篇文章介绍他的四个子类:强引用.软引用.弱引用.虚引用. 强引用(StrongReference) ...

  4. Java中 方法引用、Stream流、及方法实例 D190401

    Java中 方法引用.Stream流.及方法实例 D190401 01.第三章:方法引用_什么是方法引用 1).什么是"方法引用":指引用现有的方法代替Lambda表达式--当我们 ...

  5. java byreference_深入理解Java中的引用(一)——Reference

    深入理解Java中的引用(一)--Reference 本系列文章首先会介绍Reference类,为之后介绍的强引用.软引用.弱引用和虚引用打下基础. 最后会介绍虚引用在DirectBuffer回收中的 ...

  6. 请注意,java中没有引用传递

    今天在论坛上有人提了一个关于java中调用函数时有没有引用传递的问题,可谓是吵的不可开交.有人说java只有值传递,也有人说java既有值传递也有引用传递,那么java中到底有没有引用传递呢,下面我来 ...

  7. 类和对象系列教材 (一)- 什么是Java中的引用?

    类和对象系列教材 (一)- 什么是Java中的引用? 更多详细内容请点击这里,注册获取 引用的概念,如果一个变量的类型是 类类型,而非基本类型,那么该变量又叫做引用. 步骤1:引用和指向 步骤2:多个 ...

  8. java中是引用传递还是值传递....

    刚才与Z师兄聊天,他提问: 你说java中是引用传递还是值传递啊? 当时俺搞混了这个"传递"的意思, 本来以为是对象的实例化比如: abc a=new abc(); 这个a 是引用 ...

  9. java 指针 引用_C++中的指针和引用与Java中的引用区别

    C++的指针和Java中的引用比较像,在作为函数参数传递时,都可以在函数内部改变 "外部" 的值 C++的引用使用时必须是初始化的,他是一段内存的别名,因此也可以在函数内部改变&q ...

最新文章

  1. C语言的有序单链表合并
  2. 一句话木马使用方法总结
  3. 「高并发秒杀」mysql数据库引擎区别
  4. imagepreview使用案例_微信小程序wx.previewImage预览图片实例详解
  5. Ceph的架构(一)
  6. 一个词法分析器源码的剖析
  7. Codeforces Round #409 (Div. 2)
  8. java基本语法——常量、变量、数据类型
  9. grid php 用法,grid布局主要用法
  10. 【基础】优化背后的数学基础
  11. EasyUI实现购物车、菜单和窗口栏等最常用的用户界面功能.
  12. cryptapi双向认证_2019 08 28 netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》...
  13. php imagick下载,PHP安装imagemagick扩展imagick
  14. 面向对象7:项目二的总结
  15. iconfont 图标宽高出问题_IconFont使用注意点
  16. avast6.0网络安全软件破解至2050年_avast激活码_avast有效激活
  17. 屏幕录像专家录制的内容中有“未注册”字样怎么办
  18. Entrez Direct-入门
  19. Linux系统搭建FTP服务器教程
  20. python中输出编码问题,pyspark、spark.show、

热门文章

  1. 2022-2028全球可观察性解决方案套件软件行业调研及趋势分析报告
  2. C++ as3 socket服务端
  3. 在Vue中使用数字动画
  4. Android设备唯一识别码的获取
  5. python爬取电影天堂
  6. Java实现 LeetCode 91 解码方法
  7. 六、图(上):六度空间
  8. 抖音电商主播考核绩效直播运营KPI方案
  9. 北京小客车摇号数据的一点质疑
  10. 微信小程序实现短信认证功能