热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JVMGC垃圾回收算法中,如何判定一个对象是否是可回收的对象?

首先明确对象(引用)类型:1软引用SoftReference有些用,但是并非必需,用软引用关联的对象,系统将要发生OOM(outofmemory)之前,这些对象就会被回收

首先明确对象(引用)类型:

1 软引用 SoftReference有些用,但是并非必需,用软引用关联的对象,系统将要发生OOM(out of memory)之前,这些对象就会被回收jvm 参数设置。2 弱引用3 虚引用 PhantomReference最弱,被垃圾回收的时候会收到一个通知。

4 强引用new创建jvm 参数设置。软引用、弱引用在jdk1.2才有。一般使用强引用,内存不够情况例外。软引用(SoftReference)和弱引用 (WeakReference),有时候做缓存使用。

如何判断对象是否可以被回收jvm 参数设置

方法一、引用计数法

顾名思义,计算对象被引用的次数jvm 参数设置。但是引用计数法已经落后了,可达性分析能够解决互相引用的问题(两种方法都是基于强引用)。

方法二、可达性分析

可达性指GC Root能否找到某一对象,如果不能该对象可大致(不绝对,后面会讲)认为能够被回收jvm 参数设置

以下对象可以作为GC Root:

JVM-GC垃圾回收算法中,如何判定一个对象是否是可回收的对象?

注意,不需要死记硬背jvm 参数设置。可以这么思考:Java中变量总共四类——局部变量、静态变量 、常量、成员变量。方法区中常量引用的对象即局部变量;而虚拟机栈和本地方法栈是线程运行时创建的,里面引用的对象需要被使用,不能被回收。

不可达一定会被回收吗?对象不可达(第一次标记),而且没有在方法finalize()重新建立引用链条(第二次标记)的情况下,将会被回收jvm 参数设置。使用super.finalize()可以将某一对象挽回。


推荐阅读
author-avatar
zpy7005434
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有