zoukankan      html  css  js  c++  java
  • JVM:细节拓展

    上次我们说到了堆主要存在对象和数组,实际上,在堆中还有更细节的分代划分。GC算法也是基于分代划分来回收的。

    • 新生代Young:新创建的对象(大多数对象都是朝生夕死,生命周期很短)
      • Eden
      • SurvivorFrom
      • SurvivorTo
        默认E:S0:S1 = 8 :1 :1
    • 老年代Old
      • 对象优先分配在Young区的eden区
      • 新对象特别大,直接进入老年代
      • 新生代中年龄超过15岁的进入老年代(一次垃圾回收加一岁)
      • 动态对象年龄:survivor空间中相同对象年龄所有对象大小总和大于survivor空间的一半,大于等于该年龄的对象可以直接进入老年代
      • 担保机制:在发生Minor GC之前,虚拟机会先检查老年代最大可用的连续空间是否大于新生代所有对象总空间。如果这个条件成立,那么Minor GC可以确保是安全的。如果不成立,则虚拟机会查看HandlerPromotionFailure设置是否允许担保失败。如果允许,那么会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小。如果大于,将尝试着进行一次Minor GC,尽管这次GC是有风险的。如果小于,或者HandlerPromotionFailure设置不允许冒险,那这时也要改为进行一次Full GC了。假如担保失败则要重新发起FullGC。

    元空间

    存储类对象信息

    JVM参数 //TODO

    • 堆最大值
    • 堆最小值
    • 方法区最大值
    • 栈深度大小
  • 相关阅读:
    [C4] 前馈神经网络(Feedforward Neural Network)
    [C3] 正则化(Regularization)
    [C2] 逻辑回归(Logistic Regression)
    [C1] 线性回归(Linear Regression)
    Python基础学习
    装饰器
    完全理解Python迭代对象、迭代器、生成器
    django自己搭建的博客
    git学习,哇瑟说实话我想要的
    类继承和多态,子类重写构造函数,多重继承学习
  • 原文地址:https://www.cnblogs.com/fcb-it/p/13341970.html
Copyright © 2011-2022 走看看