标签:堆内存 简单 释放 func 介绍 int 应该 分析法 line
java语言执行在java虚拟机(jvm)上。为了解决有限的空间和性能的保证这个矛盾体,jvm所具备的GC能力。能够有效的清除不用的对象。使空间的利用更加合理。以下介绍该机制的原理。
标记清除
将废弃的对象空间标记出来,直接清除就可以。
可是。这样会造成空间的碎片过多。
假设有较大的对象须要空间,则会有更大的可能,它无法找到这种空间。
复制法
将堆空间分为两块,最好还是叫做from和to。每次new对象的时候。先放在from上,(to块保持空暇),直到from区域放满。这是要进行垃圾回收,将存活的对象拷贝到 to上,然后清空from区域,并将from和to进行互换,又一次開始。
缺点是,总有一部分空间要充当to区域,因此该区域总是空暇着等待交换。造成内存的浪费。
标记整理
相似于标记清楚,仅仅只是是在标记之后不是简单的清除,而是将存货对象整理好。一个一个排在一起。让后释放剩下的连续的一整块空间。这样做的坏处是。须要对全部对象进行复制移动,比較耗时。
分代处理
将堆内存区分为Eden区,survivorFrom区、surviorTo区(以上三个都属于年轻代),老年代和永久代。
标签:堆内存 简单 释放 func 介绍 int 应该 分析法 line
原文地址:http://www.cnblogs.com/wzjhoutai/p/7399037.html