zoukankan      html  css  js  c++  java
  • jvm虚拟机笔记<二> 垃圾回收与内存分配

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

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

    引用的概念:

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

    垃圾回收算法:

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

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

  • 相关阅读:
    yocto添加层简介
    ARM Linux 3.x的设备树(Device Tree)
    Linux device tree 简要笔记
    git 分支( branch ) 的基本使用
    Git 常用命令速查表(三)
    Git 常用命令详解(二)
    CentOS Linux安装python3
    R语言统计学习-1简介
    cnblog中添加数学公式支持
    我们数学中常用的自然常数e代表什么?看完长知识了!
  • 原文地址:https://www.cnblogs.com/lvoooop/p/11945691.html
Copyright © 2011-2022 走看看