What triggers the java Garbage Collector

前端 未结 3 1438
不知归路
不知归路 2021-01-28 05:20

I am a little confused to how garbage collection in Java works.

I get that an object becomes eligible for garbage collection when there are no more live references to it

相关标签:
3条回答
  • 2021-01-28 05:59

    It does not matter for the garbage collection of Node A if Node B has any other references to it. If Node A has no references to it, it will be garbage collected. Node B will stay, as it still has live references.

    Basically, every object that has no live references to it will be collected. Any objects contained in those objects will be subject to the same mechanism, if there are no other references to them, they will also be garbage collected. If there are live references from other objects, they will stay.

    0 讨论(0)
  • 2021-01-28 05:59

    The GC knows which objects are alive because it copies all live objects to a new memory area and all that are not copied are overwritten the next time.

    Note that this is valid for current implementations of the GC in the Oracle VM. Other VMs could handle it another way.

    0 讨论(0)
  • 2021-01-28 06:14

    There is a root set of references (current local variables, static references, operand stacks of stack frames), that is considered live. Anything that is not reachable from this root set of references is eligible for garbage collection.

    The node a is not having any reference pointing to it. So it is eligible for gc even if it is referring to a live object. Since node b is having live reference, it wont get gc'ed.

    0 讨论(0)
提交回复
热议问题