一、相关概念 基本回收算法 分代垃圾回收详述 如上图所示,为Java堆中的各代分布。 GC类型 GC有两种类型:Scavenge GC和Full GC。 Tenured被写满 Perm域被写满 System.gc()被显示调用 上一次GC之后Heap的各域分配策略动态变化 分代垃圾回收过程演示 二、 ...
分类:
其他好文 时间:
2016-08-07 21:47:16
阅读次数:
300
Java堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法,年老代主要使用标记-整理垃圾回收算法,因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器,JDK1.6中Sun HotSpot虚拟机的垃圾收集器如下: 图中如果两个垃圾收集器直接有连线,则表明这两 ...
分类:
其他好文 时间:
2016-08-05 19:48:48
阅读次数:
211
标记-清除算法标记-清除(Mark-Sweep)算法是最基础的算法,就如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其缺点进行改进而得到的。它主要有两个缺 ...
分类:
编程语言 时间:
2016-08-05 19:46:31
阅读次数:
224
主要根据以下3篇博客做的整理 http://blog.csdn.net/zsuguangh/article/details/6429592 http://www.cnblogs.com/ywl925/p/3925637.html http://blog.csdn.net/zouxinfox/arti ...
分类:
编程语言 时间:
2016-07-31 17:23:16
阅读次数:
208
一、垃圾回收算法 每个应用程序都包含一组根(root),每个根都是一个存储位置,他要么为null,要么指向托管堆的一个对象,类型中定义的静态字段、局部变量、方法参数等都会被认为是根。 垃圾回收器(GC)开始执行时,他会假设堆中的所有内存都是垃圾,换句话说,他假设线程栈、CUP寄存器中没有指针引用了堆 ...
分类:
其他好文 时间:
2016-07-22 18:36:48
阅读次数:
124
背景 说到java的特性,其中一个最重要的特性便是java通过new在堆中分配给对象的内存,不需要程序员主动去释放,而是由java虚拟机自动的回收。这也是java和C++的主要区别之一;那么虚拟机是如何实现自动回收的呢?它的基本回收算法又是什么呢? 这篇随笔先不介绍这些~ ~,熟话说 饭要一口一口地 ...
分类:
编程语言 时间:
2016-07-21 23:30:30
阅读次数:
321
java的内存结构: 1. 堆: java所有通过new新建的对象都是在堆上进行分配的; 根据不同的垃圾回收算法, 堆的结构也不相同, 如果采用的是分代垃圾回收, 那么堆就分为年轻代和年老代两部分. 2. 栈: 每个线程执行每个方法的时候都会在栈中申请一个栈帧,每个栈帧包括局部变量区和操作数栈,用于 ...
分类:
编程语言 时间:
2016-07-16 11:30:17
阅读次数:
177
垃圾收集算法、垃圾回收算法、java垃圾收集器 目录1. 垃圾收集算法1)引用计数法2)根搜索法2. 垃圾回收算法1)复制算法2)标记-清除算法3)标记-整理算法4)分代收集算法3. java垃圾收集器新生代GC器:1)Serial垃圾收集器2)ParNew垃圾收集器3)Parallel Scave ...
分类:
编程语言 时间:
2016-07-14 02:57:18
阅读次数:
453
转自:http://blog.csdn.net/bullbat/article/details/7311205 请求调页机制,只要用户态进程继续执行,他们就能获得页框,然而,请求调页没有办法强制进程释放不再使用的页框。因此,迟早所有空闲内存将被分配给进程和高速缓存,Linux内核的页面回收算法(PF ...
分类:
系统相关 时间:
2016-07-11 11:54:02
阅读次数:
337
1、标记-清除标记出需要回收的对象在标记完成后统一回收所有被标记的对象不足:效率不高,产生内存碎片太多2、复制算法将整个内存等分为两块当一块的内存用完了将存活的对象复制到另一块上面将刚使用过的这块内存清理优点:实现简单,运行高效,没有碎片产生不足:空间代价高,..
分类:
编程语言 时间:
2016-07-03 15:57:39
阅读次数:
284