文档章节

浅说垃圾回收

xiangtan
 xiangtan
发布于 2015/11/04 17:59
字数 358
阅读 6
收藏 0
  1. 可回收对象的判定方法

    1. 引用计数算法

      原理 : 给对象添加一个引用计数器,引用一次,计数器 +1 ;引用失效,计数器  -1 ;

      计数器为 0 的对象,被认为是可回收的对象。

      缺点  : 不能解决循环引用带来的问题。                            

Class A{
    public B b;
}

Class B{
    public A a;
}

public class Main{  
    public static void main(String[] args){  
    A a = new A();  
    B b = new B();  
    a.b=b;  
    b.a=a;  
    }  
}  

在回收 a 对象的时候,a的引用计数器为 1 ,等待b对象释放对a的引用;
在回收 b 对象的时候,b的引用计数器为 1 ,等待a对象释放对a的引用;
于是永远不可能被回收了。(本来应该被回收掉)

            

    b.    可达性分析算法(JDK使用)

            原理   : 通过一系列称为“GC Roots”的对象作为起始点,从这些节点向下搜索,走过的路径称为引用链(Reference Chain),

                          当一个对象到 GC Roots 没有任何引用链相连(GC Roots 到该对象不可达),

                          证明该对象可被回收。

                            


         可作为  GC Roots 的对象 :

  • 在虚拟机栈(栈帧中的本地变量表)中引用的对象

  • 方法区中的静态属性引用的对象。

  • 方法区中的常量引用的对象。

  • 本地方法栈中JNI(Native方法)引用的对象。


2.    垃圾回收算法


© 著作权归作者所有

xiangtan
粉丝 0
博文 1
码字总数 358
作品 0
深圳
程序员
私信 提问
关于垃圾回收的一些基本原理及技术解析

关于垃圾回收的一些基本原理及技术解析 什么是垃圾,为什么要垃圾回收?   垃圾回收是很大一块,在java虚拟机一些资料描述中,jvm大致干三件大事儿,1>加载class 2>分配存储空间 3>执行垃圾...

€5è¬þxãÍ
2017/08/13
0
0
java的gc(垃圾回收)

本文出自 “熔 岩” 博客,转载请与作者联系!:http://lavasoft.blog.51cto.com/62575/112126/ Java的垃圾回收总结 内存是稀缺的资源,哪怕内存一块钱一条!如果在编程中使用不当,再大的内存...

noteman
2016/08/25
57
0
Java中的对象和垃圾回收

1.java语言中的对象、数组等引用类型实体,系统都会为它在堆内存里面分配内存空间,当这个内存空间没有被引用时,java就会自动把它当做垃圾回收。垃圾回收机制有以下特点,垃圾回收机制只负责...

西红柿的眼泪
2016/07/09
16
0
谈谈 GC:新的 Orinoco 垃圾收集器

过去这些年 V8 的垃圾回收器(GC)发生了很多的变化,Orinoco 项目采用了 stop-the-world 垃圾回收器,以使其变成了一个更加并行,并发和增量的垃圾回收器。 不论什么垃圾回收器都有一些定期...

帅气是自然
06/10
0
0
.Net垃圾回收机制原理详细介绍(二)

上一篇文章介绍了.Net 垃圾回收的基本原理和垃圾回收执行Finalize方法的内部机制;这一篇我们看下弱引用对象,代,多线程垃圾回收,大对象处理以及和垃圾回收相关的性能计数器。 让我们从弱引...

swords
2013/03/25
41
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
7
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
7
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部