目录
引用
强引用
软引用
弱引用
虚引用
回收方法区
引用
早期的JDK中,大概是这样描述的:
如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称该reference数据是代表某块内存、某个对象的引用。
这种定义非常正确,但是不太够用。在实际的操作中有这样的情况。
比如:一个对象是要被删除的,但是我内存足够,有点舍不得,万一有用呢,想要留下他。等内存不够了再删也不迟啊。
——很多系统的缓存功能都符合这样的应用场景。
于是乎啊,四个“花里胡哨”的东西诞生了!!
强引用
指在程序代码之中普遍存在的引用赋值,
即类似 Student a = new Student(); 这种引用关系。
只要有我强引用在,没有什么垃圾收集能动你分毫。
软引用
指有用,但非必须的对象。
只被软引用关联着的对象,在系统将要发生内存溢出异常前,会把这些对象列进回收范围之中进行第二次回收,如果这次回收还没有足的内存, 才会抛出内存溢出异常。
弱引用
也是描述非必须的对象。但是会被垃圾收集带走,无论内存是否够。
虚引用
也被称为“幽灵引用” 或者 “幻影引用”。
这个关系非常虚无,对对象的生存时间没有影响、也不能通过虚引用获取对象实例。
唯一的目的就是,在对象被回收时能收到一个系统通知。
说白了,就是某个对象被收走的时候能有个动静。
回收方法区
关于方法区的概念,如果不了解可以看最后的链接。
根据方法区的概念来看,回收其内部存储的东西是收益不大的。实际上也是这样。
《Java虚拟机规范》中就提到过可以不要求虚拟机在方法区中实现垃圾收集。有的垃圾收集器也确实没有这部分的设计。
方法区内的垃圾主要就是废弃的常量和不再使用的类型。
这一部分呢,就简单说这些啦。
学习JVM之内存管理 03——JVM的方法区、元空间_早起之王的博客-CSDN博客方法区是什么?元空间存了什么?https://blog.csdn.net/qq_57014350/article/details/122590237?spm=1001.2014.3001.5501
早睡早起,注意身体。早起之王祝你风生水起!



