• jvm虚拟机笔记<二> 垃圾回收与内存分配


    确定对象已废弃需要两步:

    1. 利用可达性分析算法(与GC roots有关联——虚拟机栈中的对象,方法区静态对象,方法区常量对象,本地方法引用的对象)判断是否需要回收。
    2. 是否覆盖过finalize方法并执行:覆盖过可以“免死一次”。

    引用的概念:

    • 强引用(Strong Reference):通常我们通过new来创建一个新对象时返回的引用就是一个强引用,若一个对象通过一系列强引用可到达,它就是强可达的(strongly reachable),那么它就不被回收
    • 软引用(Soft Reference):软引用可达的对象在内存不充足时才会被回收,因此软引用要比弱引用“强”一些
    • 弱引用(Weak Reference):若一个对象是弱引用可达,下一次垃圾回收时无论当前内存是否充足它都会被回收
    • 虚引用(Phantom Reference):虚引用是Java中最弱的引用,那么它弱到什么程度呢?它是如此脆弱以至于我们通过虚引用甚至无法获取到被引用的对象,虚引用存在的唯一作用就是当它指向的对象被回收后,虚引用本身会被加入到引用队列中,用作记录它指向的对象已被销毁。 (销毁时发送一个通知)

    垃圾回收算法:

    • 标记-清除算法:把标记过的清除。
    • 复制算法:回收时把标记的复制一份,然后其他内存全部清除。
    • 标记-整理算法:把标记过的清除后整理。
    • 分代收集算法:分新生代与老年代选择回收算法——新生少量存活代使用复制,老年代对象存活率高6使用标记-清除(整理)。

     虚拟机提供了多种不同的垃圾收集器与调节参数

  • 相关阅读:
    [component]button skin–按钮组件外观
    as3 图片平滑方法
    SOLVED: Right Click in AS3
    一个超高效的不规则物体碰撞检测的类
    flex中的css应用
    控制时间间隔
    用flash cs3美化flex3之skin开发
    AS3实现RPG游戏鼠标8方向操作
    log4net basic example write to file
    观察者模式(C#实现 + eventhandler)
  • 原文地址:https://www.cnblogs.com/lvoooop/p/11945691.html
Copyright © 2020-2023  润新知