我遇到了以下情况:
我有一个单身人士:
public class BookManager {
private boplean initialized = false;
private static BookManager instance;
static {
instance = new BookManager();
}
public void init() {
//Performs some initialization code
initialized = true;
}
public List<Book> getAllBooks() {
if (!initialized) {
throw new Exception("Not initialized!");
}
//do some code to get the books list and return it
}
}
单例在应用程序初始化过程中被初始化并调用了init方法,并且运行良好。
一段时间后(不知道为什么) - 引发异常的用例位于以下代码中:
BookManager.getInstance().getAllBooks();
我确信在应用程序启动时调用了“init”方法,
所以我怀疑 BookManager 类被卸载了。
当进行上述调用时,
该类被重新加载,但没有调用“init”方法。
有人可以解释在什么情况下 GC 正在收集类加载器?
(为什么类开始卸载?)