Javaの--- JVMのGC

JVM

DCY 2019年12月8日


  • JVM
    • 仮想スタック領域
    • メソッド地区
    • ローカル・エリア・方法
    • ヒープ
    • プログラムカウンタ領域
      ***
  • GC
    • 若い世代(若い)旧世代(終身在職権)Permanent世代(パーマ)
    • アルゴリズムは:参照カウント到達可能性分析アルゴリズム(A Bが挙げられるが、AであるオブジェクトBへの参照は、Bは、ガーベッジオブジェクトではありません)
    • アルゴリズム清掃:マーク-仕上げ(マーク・コンパクト)(旧世代)
      ゴミをクリーンアップするオブジェクトをラベル付けし、クリア統一。第二のスタック全体を通ってステージ、及び前記順放出にライブオブジェクトがスタックに「圧縮」マークされていないオブジェクトを削除します。(デフラグ)
      コピー(コピー)このアルゴリズムは、2つの等しい面積、用途だけつの領域として指定されたメモリ空間です。ガベージコレクションは、現在の領域を横断するために使用する場合、別の領域にオブジェクトをコピーするために使用されています。
      (若い世代)

st=>start: web请求
op=>operation: 请求线程池中,看是否有空闲的线程
op1=>operation: 创建新的线程
op2=>operation: 等待
op3=>operation: 请求超时
op4=>operation: jvm为新线程创建Java栈。P寄存器,(清闲线程)PC寄存器指向第一行可执行代码。
op5=>operation: 清闲线程
op6=>operation: 执行到main一个方法的时候
op7=>operation: 调用jvm本地方法区的方法(本地方法栈为虚拟机使用的Native方法服务)
op8=>operation: 加载类。(加载类对象,初始化静态属性)
op9=>operation: 在方法区查询
op10=>operation: 方法区存在。
op11=>operation: 方法区中加载类的方法。
op13=>operation: 栈添加栈栈帧,存储存储局部变量表、操作栈、方法返回值等
op14=>operation: 执行方法,栈的变量赋值
op15=>operation: 执行完毕。
op16=>operation: 线程返回线程池,由线程池进行重新设置

cond=>condition: 有清闲的线程
cond1=>condition: 线程池没有达到最大数目
cond2=>condition: 等待是否超时
cond3=>condition: 不是本地方法
cond4=>condition: 方法所在的类是否第一次加载
cond5=>condition: 不是静态类(单例模式)
cond6=>condition: 方法区不存在

e=>end: 结束

st->op->cond

cond(false)->cond1
cond(true)->op5->op4

cond1(false)->op2->cond2
cond2(false)->op
cond2(true)->op3
cond1(true)->op1->op4

op4->op6->cond3

cond3(false)->op7
cond3(true)->op8->cond5
cond5(false)->op9->cond6
cond6(false)->op10->op13
cond5(true)->cond4

cond4(false)->op9
cond4(true)->op11->op13

op13->op14->op15->op16->e



おすすめ

転載: www.cnblogs.com/duchyaiai/p/12005466.html