Java中的垃圾回收

来源:互联网 发布:echart 数据加载不合并 编辑:程序博客网 时间:2024/05/17 06:01

垃圾回收简介

用户程序(mutator)会修改还堆区中的对象集合,从存储管理器处获取空间,创建对象,还可一引入和消除对已有对象的引用。

当mutator不能“达到”某些对象的时候,这些对象就成了垃圾。

目的:找到不可达的对象,并将这些对象交给跟踪空闲空间的存储管理器,收回他们所占的资源。


一些基本概念

类型安全:任何数据分量的类型都是可确定的。

可以在编译时刻确定数据的类型称为静态类型安全,运行时刻确定称为动态类型。

类型不安拳的语言不适合使用自动垃圾回收。

在java中,除了整型和引用这样的基本类型,所有对象都被分配在堆区而不是栈区。这种设计使得程序员不需要关注变量的生命周期,但代价是产生更多的垃圾。


可达性

对任何指针解引用就可以被程序直接访问的数据则为可达的。


局部性原理

        如果一个程序方位的存储位置很可能将在一个很短的时间段再次被访问,则称这个程序具有时间局部性(Temporal locality)。如果被访问过的存储位置的临近位置很可能在一个很短的时间段内被访问,则该程序具有空间局部性。

        通常认为程序把90%的时间来执行10%的代码。

0 0
原创粉丝点击