java的内存回收机制

java使用的内存管理方式
与c或者c++不一样的是,java的内存释放不是由程序员控制的.java

java使用gc机制来管理内存,使用Mark and Sweep GC的方式,经过全局信息一口气批量判断对象的生死,而且整理释放以后的内存.这种方式不须要为每一个对象准备一个引用计数器,能够集中销毁大量的小对象,提升内存利用率,可是销毁对象的时机则不肯定,因此java程序老是须要一些额外的内存来容纳还没有来得及销毁的对象,有时候额外的内存还会比较大.c++

堆内存与栈内存:
须要gc释放的内存通常是堆内存,通过new操做符获得的内存.
栈内存在函数调用返回后,自动就释放了.程序员

引用计数算法和可达性算法
引用计数没法处理循环引用的状况,导师丢失内存.
可达性算法,则判断内存是不是gc roots可达的,不可达则回收内存.算法

相关文章
相关标签/搜索