zoukankan      html  css  js  c++  java
  • hotspot算法实现 <<深入理解Java虚拟机>>

    1、枚举根节点
    解决何时枚举,不需要实时的枚举,oopMap数据结构对象存储枚举信息
    对象引用发生变化,需要存储每一条指令到OOPMap吗,,几百M的对象耗时需要很大的内存。GC空间成本
    2、安全点: 只有在特定位置才记录OOPMap为每条指令
    安全点不能太少,太少会让GC去枚举引用链,太多增加程序运行是的负担,所以安全点以“是否让程序长时间执行的特征选定的”,
    长时间执行最明显的特征就是指令序列复用,如:方法调用、循环跳转、异常跳转 才会安全点
    如 死循环可能导致永远不能到达safePoint,所以需要再循环调用方法的时候引入OOPMap
    3、如何让线程跑到安全点停下来
    1、抢占式终端,不需要代码主动配合2、主动式中断
    主动式中断:不直接对线程操作,设置一个标志,各个线程执行时主动轮训这个标志,发现标志为真时中断挂起,
    加入线程处于sleep或者Blocked能做到主动式吗?

    4、安全区域
    指一段代码片段中,引用关系不会发生变化,在这个区域中任意地方开始GC都是安全的。

    当线程执行到safe Region 时,首先标志进入Safe Region ,GC时不需要管当前线程,如果线程离开Safe Region检查是否完成了根节点枚举,如果完成就可以离开了

  • 相关阅读:
    【音视频】视频质量测试方向-标准
    解决苹果提审,APP Store看不到自家的App!!!
    【音视频】自研直播推流-流程概览
    【PyCharm】破解+汉化,一劳永逸
    jmeter+ant+jenkins 搭建接口自动化测试
    jenkins部署
    ruby File类
    ant + jmeter 自动化接口测试环境部署
    jmeter 插件安装
    ruby Logger日志
  • 原文地址:https://www.cnblogs.com/masterZ/p/15186101.html
Copyright © 2011-2022 走看看