zoukankan      html  css  js  c++  java
  • java基础---四种引用类型:强弱虚软

    ---强引用:不会被垃圾回收,宁肯抛出outofMemoryError错误也不会回收
    ---软引用SoftReference:内存不足的时候会被优先回收,回收之后还是内存不足才会抛出outofmemory异常。适合用于缓存对象。
    ---弱引用WeakReference:一个对象如果只有弱引用,那么就会被垃圾回收。常常用于hash表中,因为hash表允许存储java对象的引用,如果用强引用的话只要hash表存在,那么键值对象就不会回收。如果某个hash表生命周期很长,键值又多会很消耗内存。
    例如:Thread类中用ThreadLocalMap来保存局部变量,内部维护一个hash表Entry数组保存键值对(threadlocal,局部变量)其中threadLocal使用弱引用来进行包装,因为ThreadlocalMap的生命周期和Thread的生命周期一样长,当一个THreadlocal没有外部强引用的时候,它只有弱引用,这个时候就会被垃圾回收,导致entry的key为空。但是value值不是空的,那么这个entry没法垃圾回收。但是threadlocal在调用set,remove,get方法的时候会清楚掉Threadlocalmap中key为空的value的值,来保障不会内存泄漏。
    ---虚引用: 虚引用是每次垃圾回收的时候都会被回收,通过虚引用的get方法永远获取到的数据为null,因此也被成为幽灵引用。
    虚引用主要用于检测对象是否已经从内存中删除。
  • 相关阅读:
    阅读提问
    阅读笔记
    结对需求分析
    分工
    对软件工程课程的期望
    JAVAWEB-Spring Boot学习
    团队编程-项目作业6-程序维护
    团队-吃货之家-项目总结
    团队编程项目作业5-小组评分
    安装Vue.js之Node.js,NMP环境搭建
  • 原文地址:https://www.cnblogs.com/buptyuhanwen/p/9396559.html
Copyright © 2011-2022 走看看