• 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,因此也被成为幽灵引用。
    虚引用主要用于检测对象是否已经从内存中删除。
  • 相关阅读:
    spring-boot BUG 集锦
    彻底卸载mysql
    mybatis -generator 逆向工程
    内网穿透工具使用
    Spring 笔记
    maven项目 @Resource报错 ava.lang.NoSuchMethodError: javax.annotation.Resource.lookup()Ljava/lang/String;
    log4j配置及异常、解决办法
    from…import * 语句与 import 区别
    python:__file__
    python安装yaml
  • 原文地址:https://www.cnblogs.com/buptyuhanwen/p/9396559.html
Copyright © 2020-2023  润新知