zoukankan      html  css  js  c++  java
  • jvm slot复用

    如果当前字节码PC计数器的值已经超出了某个变量的作用域,那这个变量对应的Slot就可以交给其他变量使用。

    字节码PC计数器就是程序计数器,程序计数器记录当前线程所执行的字节码的偏移地址。如果这个值超出了某个变量的作用域,那么接下来这个变量就不会再被访问到。

    slot的复用会影响到系统的垃圾收集行为:

    1、

    没有回收p所占的内存,因为在执行System.gc()时,变量p还处于作用域内,虚拟机自然不敢回收p的内存。

    2、

    p的所用域被限制在了块中,执行System.gc()的时候。p已经不能被访问了。可还是没有被回收。

    3、继续修改

    这次垃圾被回收了。

    slot复用会打断slot中变量与对象的引用,这种关联被打断后,垃圾回收才会生效。

    虽然块中的变量不可能在块外被访问,妥妥的垃圾了,但是slot和对象的关联仍然保持,不会成为垃圾。

    《深入理解java虚拟机》

  • 相关阅读:
    day3 数据类型
    子查询
    mysql综合练习题
    day5 练习
    月末总结
    Iconfont-阿里巴巴矢量图标库
    vue简介
    Redis简介和数据结构
    浏览器初始化css
    vue脚手架搭建项目初始化
  • 原文地址:https://www.cnblogs.com/natian-ws/p/10723440.html
Copyright © 2011-2022 走看看