2011-12-04 31 views
3

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

+0

你不能把东西放在垃圾收集器可以清除的堆栈上。 – svens

+0

@svens实际上不是真的--JIT会在堆栈上分配对象(如果可能的话),但显然堆栈中的GC没有任何意义 - 这将如何工作? – Voo

回答

6

生活在堆栈上的唯一东西是引用和基本类型的实例。这两个都被垃圾收集器忽略。

7

堆栈上没有垃圾。

0

它的对象没有一个可以清理的线程堆栈的强大参考。

2

垃圾回收只发生在堆上,不再从GC roots引用的对象。

堆栈是您的本地变量(如基元和对象引用)存在的地方。这里没有GC的概念。考虑堆栈数据结构。如果一个局部变量在特定线程的堆栈帧的范围内,它会被推送到这个堆栈帧,当它超出范围时,它将被移出堆栈帧。