• 请不要在回答技术问题时复制粘贴 AI 生成的内容
rizon
V2EX  ›  程序员

Java gcroots 到底是啥?为什么作用域结束后对象会被回收

  •  
  •   rizon ·
    othorizon · Feb 21, 2019 · 2179 views
    This topic created in 2726 days ago, the information mentioned may be changed or developed.

    一个 for 循环中的强引用对象 String a=new String("") 在 for 循环结束后会被回收吧?
    是 for 循环全部结束,还是当前循环结束就算了?

    但是这个是基于哪个理论基础的,,查了好久资料没看到哪里提到了作用域和垃圾回收之间的关系。
    java 中没有被 gcroots 引用的对象就会被回收,那到底谁是 gcroots。。为啥离开作用域就会被回收?

    2 replies    2019-02-21 20:02:57 +08:00
    fkdog
        1
    fkdog  
       Feb 21, 2019
    回收的话应该是会在所有线程到达 safepoint 点的时候再进行回收操作的。
    作用域结束以后,作用域内的对象不可被作用域外部访问而已
    cyspy
        2
    cyspy  
       Feb 21, 2019
    只能保证作用域内不被回收(否则程序就崩了),但不保证离开就一定会被回收。GCRoots 包括栈、static、常量、native 方法,不被这些引用的你代码里也不可能访问到了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4501 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 01:07 · PVG 09:07 · LAX 18:07 · JFK 21:07
    ♥ Do have faith in what you're doing.