Java垃圾回收器会清理堆栈内存吗?

8

Java中的垃圾收集器仅用于清除堆内存中未使用的对象,还是它实际上也帮助清理堆栈内存?


你不能将可能被垃圾回收器清除的东西放在堆栈上。 - svens
@svens 实际上不是真的 - 如果可能的话,JIT 会在堆栈上分配对象,但显然,在堆栈上进行垃圾回收没有任何意义 - 那会是如何运作呢? - Voo
4个回答

10

在堆栈中存活的只有引用和基本类型的实例。这两者都被垃圾回收器忽略。


8

栈上不存在垃圾数据。


4

垃圾回收仅在堆上发生,用于不再引用任何GC roots的对象。

栈是本地变量(如基元和对象引用)所在的位置。这里没有GC的概念。可以将其想象为栈数据结构。如果本地变量处于作用域中(特定线程的堆栈帧),它将被推送到此堆栈帧,并在超出作用域时从堆栈帧中弹出。


0

它是指那些没有被线程栈强引用的对象,可以被清理掉。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接