垃圾收集器是否负责删除堆栈?
是否还为静态/常量变量释放内存?
示例:
class A
{
void fun(){
int x = 100;
static int y = 200;
final int z = 300;
}
}
当函数完成时,是否所有三个变量的内存都被释放了?
答案 0 :(得分:2)
垃圾收集器负责堆上的孤立对象。
看看这个Oracle教程Java Garbage Collection Basics。它解释了GC基础知识。
答案 1 :(得分:2)
只要加载了它们所在的类,静态字段就不符合垃圾回收的条件。根据{{3}}:
当且仅当其定义类时,才可以卸载类或接口 垃圾收集器可以回收加载程序。
答案 2 :(得分:0)
基本上,垃圾收集会为JVM中任何其他对象不再引用的所有对象释放内存。因此,如果它是静态或实例字段或局部变量并不重要。