Java静态变量所在的类被回收了,静态变量会不会被一起回收?

我了解到,
如果调用一个类的静态变量时,它所在的类还没有被加载,就会开始类的加载、初始化过程;
如果这个静态变量使用完了,也没有引用指向它了,静态变量所在的类就可以被gc回收了;

静态变量是存放在方法区的,类的对象是存放在堆内存的,类被回收了,静态变量会被一起回收吗?

我猜是不会的,因为方法区很少涉及到gc,而且静态变量是持续到进程的生命周期结束的。

如果上面说的都对,那再次调用这个静态变量的时候,如果所在的类被回收了,是否会再重新进行一次加载和初始化过程?

谢谢

阅读 11.1k
2 个回答

如果静态变量还被引用的话,静态变量所处的类为什么会被回收呢?这个前提感觉就是不存在的吧。

方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题