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检查是否完成了根节点枚举,如果完成就可以离开了

  • 相关阅读:
    尽可能装满的背包问题
    mysql的下载与安装
    IDEA中安装ibatis插件
    tomcat启动失败,提示信息:Unable to ping server at localhost:1099
    http响应头
    查看电脑的IP地址及配置
    IDEA中不同项目配置不同JDK
    Navicat for mysql的下载及破解
    java中String的equals()和 ==
    BeanUtils出现Java.lang.NoClassDefFoundError解决
  • 原文地址:https://www.cnblogs.com/masterZ/p/15186101.html
Copyright © 2011-2022 走看看