拒绝简单的记忆,仔细想想为什么GC Root集合中都是这几类。
先看下周志明老师书中的概念

第一类,常量。
当一些变量的值不会变动,并且会频繁的使用时,就会将其直接声明成常量。优于其频繁使用的特性,所以常量不能被回收。
第二类,静态变量。
静态变量的生命周期与类的生命周期相同,只要类不卸载,静态变量也就会一直存在,所以也不能被回收。
第三类,栈中的变量。
栈中的变量都是我们正在使用的变量。当函数调用结束时,栈也会随之释放,栈中的变量也会被释放,只有这个时候,栈变量引用的空间,才能被回收。
JVM的标准中,有栈和本地方法栈,所以这两个栈中的变量引用着的对象,也不能被回收。
网友评论