强引用,软引用,弱引用,虚引用

强引用:
我们一般使用的就是强引用。垃圾回收器绝不会回收它。
当内存空间不足时Java虚拟机宁愿抛出OutOfMemoryError错误使程序异常终止,也不会回收具有强引用的对象来解决内存不足的问题

软引用:
如果一个对象具有软引用,那么当内存空间足够的时候GC就不会回收它,如果内存空间不足了,就会回收这些对象的内存空间。

弱引用:

如果一个对象具有弱引用,那么当GC线程扫描的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。

其实准备地说应该是"如果一个对象只具有弱引用.........",即仅有弱引用而不存在对其的强引用才会将其回收.

但由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。

为了防止内存溢出,在处理一些占用内存大而且声明周期较长的对象时候,可以尽量应用软引用和弱引用.
但是也请注意在Android较老版本中,常用软引用或弱引用 (SoftReference or WeakReference)实现内存缓存技术。
但从 Android 2.3 (API Level 9)开始,GC会更倾向于回收持有软引用或弱引用的对象,这让软引用和弱引用变得不再可靠。

虚引用:
顾名思义,“虚引用”就是形同虚设,与其他三种引用都不同它并不会决定对象的生命周期。
如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。
虚引用主要用来跟踪对象被垃圾回收器回收的活动。

强引用,软引用,弱引用,虚引用相关推荐

  1. java中四种引用类型(对象的强、软、弱和虚引用)

    2019独角兽企业重金招聘Python工程师标准>>> 对象的强.软.弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有 ...

  2. 对象的强、软、弱和虚引用

    本文介绍对象的强.软.弱和虚引用的概念.应用及其在UML中的表示. 1.对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有 ...

  3. Java:对象的强、软、弱和虚引用

    见:http://zhangjunhd.blog.51cto.com/113473/53092 maven/Java/web/bootstrap/dataTable/app开发QQ群:56686262 ...

  4. 软引用和弱引用的区别_强、软、弱、虚引用的区别和使用

    原文阅读: 强.软.弱.虚引用的区别和使用​mp.weixin.qq.com Java提供了四种级别的应用类型:强引用.软引用.弱引用及虚引用.那么这四种引用类型有什么区别呢? 首先我们通过一张图来看 ...

  5. java-基础-强、软、弱、虚引用

    Java的四种引用,强弱软虚,用到的场景. JDK1.2之前只有强引用,其他几种引用都是在JDK1.2之后引入的. 强引用(Strong Reference) 最常用的引用类型,如Object obj ...

  6. jvm系列 (四) ---强、软、弱、虚引用

    java引用 目录 jvm系列(一):jvm内存区域与溢出 jvm系列(二):垃圾收集器与内存分配策略 jvm系列(三):锁的优化 我的博客目录 为什么将引用分为不同的强度 因为我们需要实现这样一种情 ...

  7. JVM 学习(2)—简单理解Java 四大引用(强、软、弱、虚)

    一.Java 引用概述 Java 中出现四种引用是为了更加灵活地管理对象的生命周期,以便在不同场景下灵活地处理对象的回收问题.不同类型的引用在垃圾回收时的处理方式不同,可以用来实现不同的垃圾回收策略. ...

  8. Java对象引用四个级别(强、软、弱、虚)

    转载自 Java对象引用四个级别(强.软.弱.虚) 最近,高级Java技术栈微信群中,有一些猿友在讨论JVM中对象的周期问题,有谈到引用的级别,现在为大家做个总结吧,虽然大多数公司并没有意识或者用到这 ...

  9. 【Java】Java对象引用四个级别(强、软、弱、虚)

    文章目录 1.概述 强引用(StrongReference) 软引用(SoftReference) 弱引用(WeakReference) 虚引用(PhantomReference) 2. 扩展阅读 1 ...

  10. Java的四大引用强、软、弱、虚

    一.什么是引用 首先要明白什么是一个引用呢?Object o = new Object()这就是一个引用了,一个变量指向new出来的对象,这个变量就叫一个引用,引用这个东西,在java里面分4种,普通 ...

最新文章

  1. adg oracle 架构_云化双活的架构演进,宁夏银行新核心搭载Oracle 19c投产上线
  2. cisco设备常用命令
  3. 测试机型不够?把玩家反馈过的问题机型,都测个遍
  4. DQN 处理 CartPole 问题——使用强化学习,本质上是训练MLP,预测每一个动作的得分...
  5. 线程池参数详解_java中常见的六种线程池详解
  6. 地平线开源轻量级、有效可变组卷积的人脸识别网络VarGFaceNet
  7. mavros 仿真与飞行器控制
  8. mysql Subqueries
  9. 在Ubuntu下安装qq
  10. python下载官网-Python2.7.10
  11. go中break continue的使用:示例
  12. 【go网络编程】-HTTP编程
  13. 求oracle学习资料(最好是视频)
  14. 一、网络知识 1.计算机网络原理
  15. 微信小程序 服务器代理转发,微信小程序转发功能
  16. linux openoffice 安装字体,Linux服务器上安装openoffice,以及安装字体文件
  17. 用计算机计算应该注意什么,多功能计算器的使用方法及注意事项
  18. 板绘都有哪些优缺点?应该注意什么
  19. javascript 45种缓动效果BY司徒正美
  20. Tarena - 表的创建

热门文章

  1. 鼠标经过图片 图片放大缩小
  2. android 广告库sdk,GitHub - adxdata/sdk-android-demo: 美数广告SDK(Android)示例
  3. 20150317 实习之——余世维视频(上)
  4. Matlab图像的几何变换之图像缩放
  5. Android USB Camera(1) : 调试记录
  6. union与order by 结合使用
  7. mysql时间类型之按时间排序精确到毫秒
  8. 用C语言将整数翻译为英文,C语言实现翻译功能
  9. delphi 企业微信消息机器人_企业微信群消息机器人发送开源项目
  10. 分享一个外国免费在线领各类软件激活码的网站