zoukankan      html  css  js  c++  java
  • jvm与GC

    https://juejin.im/post/5a15be736fb9a044fc4464d6

    jvm

    jvm把内存分为
    1.方法区(Method Area)
    2.堆区(Heap)
    3.虚拟机栈(VM Stack)
    4.本地方法栈(Native Method Stack)
    5.程序计数器(Program Counter Register)
    ?6.常量池区
    为什么新生代要有2个Survivorhttps://blog.csdn.net/antony9118/article/details/51425581

    gc

    引用计数算法

    经典的引用计数算法,每个对象添加到引用计数器,每被引用一次,计数器+1,失去引用,计数器-1,当计数器在一段时间内为0时,即认为该对象可以被回收了。但是这个算法有个明显的缺陷:当两个对象相互引用,但是二者都已经没有作用时,理应把它们都回收,但是由于它们相互引用,不符合垃圾回收的条件,所以就导致无法处理掉这一块内存区域。

    根搜索算法

    Sun的JVM并没有采用这种算法,而是采用一个叫——根搜索算法,基本思想是:从一个叫GC Roots的根节点出发,向下搜索,如果一个对象不能达到GC Roots的时候,说明该对象不再被引用,可以被回收。如上图中的Object5、Object6、Object7,虽然它们三个依然相互引用,但是它们其实已经没有作用了,这样就解决了引用计数算法的缺陷。

    四个应用状态

    个人小站:http://jun10ng.work/ 拥抱变化,时刻斗争,走出舒适圈。
  • 相关阅读:
    allocator类
    智能指针shared_ptr
    字面值常量类
    转换构造函数
    委托构造函数
    访问说明符&封装
    const成员函数
    函数指针
    constexper和常量表达式
    函数返回数组指针
  • 原文地址:https://www.cnblogs.com/Jun10ng/p/12348292.html
Copyright © 2011-2022 走看看