【发布时间】:2012-12-20 17:59:18
【问题描述】:
在LogManager的getLogger()方法的描述中是这样写的:
"(...)如果没有对Logger的强引用,与String名称关联的Logger可能随时被垃圾回收。该方法的调用者必须检查返回值是否为null,以便正确处理记录器已被垃圾收集的情况。”
GC 怎么可能擦除 Logger,因为 LogManager 必须保留对所有 Logger 的所有引用才能解析 Logger 的名称?
这不是有点奇怪,Java API 允许在我的应用程序开始时创建和设置我的 Loggers 但忘记保留引用,然后如果我使用 Logger.getLogger('someName' ) 我将获得一个新的、默认的我设置的记录器?
【问题讨论】: