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

  • 相关阅读:
    Rsync数据同步详情及配置
    ssh密钥及发放
    ssh服务及简单应用
    二叉搜索树的第k个结点
    序列化二叉树
    把二叉树打印成多行
    按之字形顺序打印二叉树
    对称的二叉树
    二叉树的下一个结点
    删除链表中重复的结点
  • 原文地址:https://www.cnblogs.com/natian-ws/p/10723440.html
Copyright © 2011-2022 走看看