关于垃圾回收的小结
来源:互联网 发布:mac 命令行 删除软件 编辑:程序博客网 时间:2024/05/21 18:31
垃圾回收主要是针对堆这个区域的,而堆主要是存放对象。
在进行垃圾回收的时候该如何判断对象是否已经死亡呢,通常有两种方式:引用计数法和发达性分析算法
引用计数法就是给对象添加一个引用计数器,每次有一个地方引用它时,计数器的值就加一,当引用失效时,计数器的值就减一。任何时刻计数器的值为0的对象就是不可以在被使用的对象了。但是这个算法很难解决对象之间相互循环引用的问题。
可达性引用:就是通过一系列的称为GC Roots的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明该对象是不可用的。
GC Roots包括:虚拟机栈(栈帧中的本地变量表)中引用的对象、方法区中类静态属性引用的对象、方法去中常量引用的对象、本地方法栈中JNI(一般说的Native方法)引用的对象。
垃圾回收算法:标记-清除算法、复制算法、标记-整理算法、分代收集算法
堆一般分为新生代和老年代。新生代又分为Eden区、和两个Survivor区。新生代中,每次垃圾回收时发现都会有大量的对象死去,只有少量的对象会存活,那就选用复制算法,只需要付出少量的存活对象的复制成本就可以完成收集。而老年代中对象的存活率比较高,没有额外的空间对它进行担保,就必须使用标记-清除或者标记-整理算法。
内存分配策略:
对象优先在Eden区分配、大对象直接进入老年代、长期存活的对象进入老年代、动态的年龄判断、空间分配担保。
0 0
- 关于垃圾回收的小结
- 关于垃圾回收的总结
- 关于AS3的垃圾回收
- Java垃圾回收小结
- JVM垃圾回收小结
- 关于JavaScript闭包/匿名函数,以及垃圾回收算法的小结
- 关于垃圾回收的一些知识
- 关于垃圾回收器的剖析
- 关于JAVA的引用和垃圾回收
- 关于java垃圾回收的一个疑问
- 【JavaScript】关于垃圾回收CollectGarbage()的使用(
- 关于匿名内部类的垃圾回收
- 关于垃圾回收CollectGarbage()的使用
- 关于垃圾回收GC的整理
- 关于垃圾回收的几个错误认识
- 关于垃圾回收的一些看法
- 关于jvm的垃圾回收机制
- 关于lua垃圾回收器的理解
- 动态规划 —— 求解二项式系数
- POJ 3904 Sky Code (容斥原理)
- 第五周项目一 2
- sql 常用数学函数
- 清除浮动
- 关于垃圾回收的小结
- JBPM4关于Assignee动态获取------OA系统工作流环节问题
- 游戏人物
- 69. Sqrt(x)
- POJ 2236-Wireless Network(并查集)
- nginx负载均衡配置
- iOS UIDevice- NSBundle - NSlocale
- 111-e-Minimum Depth of Binary Tree
- bzoj 3876(有上下界的最小费用流)