细说JVM系列:分代收集算法补遗
来源:互联网 发布:游戏开发java命令 编辑:程序博客网 时间:2024/06/05 08:57
分代收集算法补遗
在前面我们就提到过,java堆为了更精细化的管理,又分为新生代和老生代。
1.Java堆中各代分布
图1:Java堆中各代分布
Young:主要是用来存放新生的对象。
Old:主要存放应用程序中生命周期长的内存对象。
Permanent:是指内存的永久保存区域,主要存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域. 它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。
2.JVM 使用的GC算法是什么?
分代收集。
即将内存分为几个区域,将不同生命周期的对象放在不同区域里;
在GC收集的时候,频繁收集生命周期短的区域(Young area);
比较少的收集生命周期比较长的区域(Old area);
基本不收集的永久区(Perm area)。
新生代采用复制算法,老生代采用标记清理或者标记整理算法。
3.GC 和 Full GC 有什么区别?
GC(或Minor GC):收集 生命周期短的区域(Young area)。
Full GC (或Major GC):收集生命周期短的区域(Young area)和生命周期比较长的区域(Old area)对整个堆进行垃圾收集。
他们的收集算法不同,所以使用的时间也不同。 GC 效率也会比较高,我们要尽量减少 Full GC 的次数。 当显示调用System.gc() 时,gc does a full collection(both young generation and tenured generation).
4.Minor GC后,Eden是空的吗?
是的,Minor GC会把Eden中的所有活的对象都移到Survivor区域中,如果Survivor区中放不下,那么剩下的活的对象就被移到Old generation 中。
5.新老生代之间又是如何转化的呢?
参考博客
细说JVM系列:自动内存管理内存分配:内存分配和回收策略
http://blog.csdn.net/a910626/article/details/52331621
- 细说JVM系列:分代收集算法补遗
- JVM垃圾收集算法——分代收集算法
- JVM-GC算法_分代收集算法
- Jvm 标记-清除法,复制算法,分代收集算法
- 17.JVM垃圾回收分代收集算法
- Java 分代收集算法
- 分代收集算法详解
- 细说JVM系列:自动内存管理内存回收:垃圾收集理论-垃圾收集算法
- jvm垃圾收集(标记-清除,复制,标记-整理,分代)算法
- jvm垃圾收集(标记-清除,复制,标记-整理,分代)算法
- jvm垃圾收集(标记-清除,复制,标记-整理,分代)算法
- Java虚拟机学习:分代收集算法
- Java虚拟机学习:分代收集算法
- Java GC 分代收集算法
- 基于分代的垃圾收集算法
- JVM垃圾分代回收算法详解
- JVM调优(五):分代收集器详述
- jvm的stack和heap,JVM内存模型,垃圾回收策略,分代收集,增量收集
- JAVASE总结--时间类
- 文章标题
- 进程间通信之命名管道
- 为基本组件添加权限检查,如Activity
- windows下强制杀死tomcat进程
- 细说JVM系列:分代收集算法补遗
- JQUERY方法应用
- 最小生成树之PRIM及KRUSCAL
- JVM参数详细列表
- 输入输出小节
- 埃氏筛选素数及其变形
- 【面试题9】斐波那契数列
- JAVASE总结--Math类
- JVM垃圾收集器