强引用,软引用,弱引用,虚引用
强引用,软引用,弱引用,虚引用
强引用:
我们一般使用的就是强引用。垃圾回收器绝不会回收它。
当内存空间不足时Java虚拟机宁愿抛出OutOfMemoryError错误使程序异常终止,也不会回收具有强引用的对象来解决内存不足的问题
软引用:
如果一个对象具有软引用,那么当内存空间足够的时候GC就不会回收它,如果内存空间不足了,就会回收这些对象的内存空间。
弱引用:
如果一个对象具有弱引用,那么当GC线程扫描的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。
其实准备地说应该是"如果一个对象只具有弱引用.........",即仅有弱引用而不存在对其的强引用才会将其回收.
但由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。
为了防止内存溢出,在处理一些占用内存大而且声明周期较长的对象时候,可以尽量应用软引用和弱引用.
但是也请注意在Android较老版本中,常用软引用或弱引用 (SoftReference or WeakReference)实现内存缓存技术。
但从 Android 2.3 (API Level 9)开始,GC会更倾向于回收持有软引用或弱引用的对象,这让软引用和弱引用变得不再可靠。
虚引用:
顾名思义,“虚引用”就是形同虚设,与其他三种引用都不同它并不会决定对象的生命周期。
如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。
虚引用主要用来跟踪对象被垃圾回收器回收的活动。
强引用,软引用,弱引用,虚引用相关推荐
- java中四种引用类型(对象的强、软、弱和虚引用)
2019独角兽企业重金招聘Python工程师标准>>> 对象的强.软.弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有 ...
- 对象的强、软、弱和虚引用
本文介绍对象的强.软.弱和虚引用的概念.应用及其在UML中的表示. 1.对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有 ...
- Java:对象的强、软、弱和虚引用
见:http://zhangjunhd.blog.51cto.com/113473/53092 maven/Java/web/bootstrap/dataTable/app开发QQ群:56686262 ...
- 软引用和弱引用的区别_强、软、弱、虚引用的区别和使用
原文阅读: 强.软.弱.虚引用的区别和使用mp.weixin.qq.com Java提供了四种级别的应用类型:强引用.软引用.弱引用及虚引用.那么这四种引用类型有什么区别呢? 首先我们通过一张图来看 ...
- java-基础-强、软、弱、虚引用
Java的四种引用,强弱软虚,用到的场景. JDK1.2之前只有强引用,其他几种引用都是在JDK1.2之后引入的. 强引用(Strong Reference) 最常用的引用类型,如Object obj ...
- jvm系列 (四) ---强、软、弱、虚引用
java引用 目录 jvm系列(一):jvm内存区域与溢出 jvm系列(二):垃圾收集器与内存分配策略 jvm系列(三):锁的优化 我的博客目录 为什么将引用分为不同的强度 因为我们需要实现这样一种情 ...
- JVM 学习(2)—简单理解Java 四大引用(强、软、弱、虚)
一.Java 引用概述 Java 中出现四种引用是为了更加灵活地管理对象的生命周期,以便在不同场景下灵活地处理对象的回收问题.不同类型的引用在垃圾回收时的处理方式不同,可以用来实现不同的垃圾回收策略. ...
- Java对象引用四个级别(强、软、弱、虚)
转载自 Java对象引用四个级别(强.软.弱.虚) 最近,高级Java技术栈微信群中,有一些猿友在讨论JVM中对象的周期问题,有谈到引用的级别,现在为大家做个总结吧,虽然大多数公司并没有意识或者用到这 ...
- 【Java】Java对象引用四个级别(强、软、弱、虚)
文章目录 1.概述 强引用(StrongReference) 软引用(SoftReference) 弱引用(WeakReference) 虚引用(PhantomReference) 2. 扩展阅读 1 ...
- Java的四大引用强、软、弱、虚
一.什么是引用 首先要明白什么是一个引用呢?Object o = new Object()这就是一个引用了,一个变量指向new出来的对象,这个变量就叫一个引用,引用这个东西,在java里面分4种,普通 ...
最新文章
- adg oracle 架构_云化双活的架构演进,宁夏银行新核心搭载Oracle 19c投产上线
- cisco设备常用命令
- 测试机型不够?把玩家反馈过的问题机型,都测个遍
- DQN 处理 CartPole 问题——使用强化学习,本质上是训练MLP,预测每一个动作的得分...
- 线程池参数详解_java中常见的六种线程池详解
- 地平线开源轻量级、有效可变组卷积的人脸识别网络VarGFaceNet
- mavros 仿真与飞行器控制
- mysql Subqueries
- 在Ubuntu下安装qq
- python下载官网-Python2.7.10
- go中break continue的使用:示例
- 【go网络编程】-HTTP编程
- 求oracle学习资料(最好是视频)
- 一、网络知识 1.计算机网络原理
- 微信小程序 服务器代理转发,微信小程序转发功能
- linux openoffice 安装字体,Linux服务器上安装openoffice,以及安装字体文件
- 用计算机计算应该注意什么,多功能计算器的使用方法及注意事项
- 板绘都有哪些优缺点?应该注意什么
- javascript 45种缓动效果BY司徒正美
- Tarena - 表的创建
热门文章
- 鼠标经过图片 图片放大缩小
- android 广告库sdk,GitHub - adxdata/sdk-android-demo: 美数广告SDK(Android)示例
- 20150317 实习之——余世维视频(上)
- Matlab图像的几何变换之图像缩放
- Android USB Camera(1) : 调试记录
- union与order by 结合使用
- mysql时间类型之按时间排序精确到毫秒
- 用C语言将整数翻译为英文,C语言实现翻译功能
- delphi 企业微信消息机器人_企业微信群消息机器人发送开源项目
- 分享一个外国免费在线领各类软件激活码的网站