LogManager和垃圾收集器

Pro*_*.pl 7 java garbage-collection

在LogManager的getLogger()方法的描述中,它写成如下:

"(...)如果没有对Logger的强引用,则可以随时对与String名称相关联的记录器进行垃圾回收.此方法的调用者必须检查null的返回值,以便正确处理记录器已被垃圾收集."

GC是如何可以擦除记录器的,因为LogManager必须保留对所有记录器的所有引用才能解析记录器的名称?

是不是有点奇怪,Java API允许一种情况,在我的应用程序的开始我创建和设置我的记录器但忘记保持引用,然后如果我使用Logger.getLogger('someName')我会得到新的,默认我设置的Loggers的一个instad?

NPE*_*NPE 7

GC是如何可以擦除记录器的,因为LogManager必须保留对所有记录器的所有引用才能解析记录器的名称?

如果对记录器LogManager保持弱引用(我相信它会这样),这是可能的.

是不是有点奇怪,Java API允许一种情况,在我的应用程序的开始我创建和设置我的记录器但忘记保持引用,然后如果我使用Logger.getLogger('someName')我会得到新的,默认我设置的Loggers的一个instad?

有人可能会说,如果你关心你的记录器,你应该保留它的参考.该文件是说的很清楚:

应用程序应保留自己对Logger对象的引用,以避免被垃圾回收.LogManager可能只保留弱引用.