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虚拟机》

  • 相关阅读:
    安装PyExecJS出现问题
    常用模块
    python2和python3的区别
    正则表达式
    MySQL之表的关系
    Python与MySQL的交互
    select 查询
    MySQL之表的连接
    bug
    黑盒测试-判定表驱动法
  • 原文地址:https://www.cnblogs.com/natian-ws/p/10723440.html
Copyright © 2011-2022 走看看