文章目录

  • 一、静态变量
  • 二、 Java 引用类型 ( 强、软、弱、虚 )

一、静态变量


GC Root 对象 :

  • 线程栈 中的 栈帧 中的 局部变量表 中的 引用对象 ;
  • 方法区 中的 静态引用对象 ;
  • 方法区 中的 常量引用对象 ;
  • 本地方法栈 中的 JNI 中的 引用的对象 ;

所有的 静态变量 都是 GC Root 对象 , 一旦使用了静态变量 , 该变量涉及到的所有引用对象 , 都在以 GC Root 为起点的调用链中 , 这些对象始终都无法变为 垃圾对象 , 无法被回收 , 这就造成了内存泄漏 ;

二、 Java 引用类型 ( 强、软、弱、虚 )


参考博客 : 【Android 内存优化】Java 引用类型 ( 强引用 | 软引用 | 弱引用 | 虚引用 )

强引用 , StrongRefrence , Java 默认的引用 , 如果被 强引用 引用的对象 , 永远都不可能被回收 , 即使出现了 OOM ; 内存泄漏也是强引用导致的 ;

软引用 , SoftRefrence , 当 系统内存不足时 , 软引用即使还引用着对象 , 也要将该对象回收 ; 将要出现 OOM 时 , 会回收软引用 ;

弱引用 , WeakRefrence , 不管内存是否充足 , 每次 GC 垃圾回收 , 必定回收弱引用 ;

虚引用 , PhantomRefrence , 使用 get 获取对象时 , 获取到的是 null , 虚引用就是不存在的引用 , 几乎很少使用 ;

强引用 ( 不回收 ) > 软引用 ( OOM 前回收 ) > 弱引用 ( GC 必回收 ) > 虚引用 ( 回收前通知 )

如果单纯的想避免 OOM , 创建大对象时 建议使用软引用 ;

使用 软引用 , 弱引用 时 , 注意程序的逻辑 , 不要因为出现对象被系统回收 , 导致出现 空指针 异常之类的问题 , 要有备份方案 ;

【Java 虚拟机原理】Java 引用类型 ( 强引用 | 软引用 | 弱引用 | 虚引用 | 静态变量 )相关推荐

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

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

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

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

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

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

  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 的四大引用(强、软、弱、虚)

    在 jdk1.2 以后,Java 对于引用的概念进行了扩充,将引用分为强引用(Strong Reference).软引用(Soft Reference).弱引用(Weak Reference).虚引用 ...

最新文章

  1. 摄像头图像桶形畸变校正测试
  2. 激光光凝手术的副作用和必要性
  3. NET问答: C# 中有哪些 HttpPost 工具包
  4. mysql mysar_使用mysar分析squid日志(日志存mysql)
  5. 如何彻底清除UniAccess Agent
  6. 10分钟学会python函数式编程
  7. HTML实时预览-LiveReload完整使用方法
  8. linux系统--C语言程序开发的基本步骤(包含gcc的基本步骤)
  9. protues仿真闪退问题,亲测有效
  10. js调用qq互联api实现第三方登录
  11. 一代测序原理 (Sanger法测序)
  12. Windows Server 2003 AGP纹理加速无法打开问题可行的解决方案
  13. vue中全局定义mintUI中toast
  14. iOS 调用TouchID 身份验证
  15. AcWing 487. 金明的预算方案 (有依赖关系的背包问题)
  16. 括号配对检测python123_括的意思
  17. Xshell密钥认证
  18. 命令行教程,第一部分 — 导航目录
  19. ftk挂载镜像 加vm 实现仿真
  20. 供应链管理与企业边界—基于超边际的分析框架 (zt)

热门文章

  1. POJ 2955 (区间DP)
  2. 网站后台管理界面设计的一些想法
  3. 人的一生奋斗史Rational Rose 版
  4. python字典排序取最值总结
  5. 科学计算库Numpy——随机模块
  6. P4324 [JSOI2016]扭动的回文串
  7. C#将Excel数据表导入SQL数据库的两种方法(转)
  8. May 18:PHP 用到的学习工具
  9. ECharts 之 环形图
  10. @RequestParam @RequestBody @PathVariable 等参数绑定注解详解