如何在Java中清除第三方库的静态变量

如何在Java中清除第三方库的静态变量,java,memory-management,singleton,Java,Memory Management,Singleton,我正在使用Java中的第三个库,它使用单例模式。 在使用这个库一段时间后,我不再需要这个库并准备释放它,而是因为它使用单例模式,并且不提供任何clean/free/close方法,只要我的应用程序运行,清理分配的内存就会保留在堆中 我的问题是:我能清理分配给这个库的内存吗,即使它没有为此提供任何函数?一般来说,不能。你能在单独的进程中运行库代码,以便在终止时清理所有内存吗?@AndyTurner,只是想知道,为什么不能?因此,即使我将引用设置为null,引用仍然无法被gc清理?@kucing_t

我正在使用Java中的第三个库,它使用单例模式。 在使用这个库一段时间后,我不再需要这个库并准备释放它,而是因为它使用单例模式,并且不提供任何clean/free/close方法,只要我的应用程序运行,清理分配的内存就会保留在堆中


我的问题是:我能清理分配给这个库的内存吗,即使它没有为此提供任何函数?

一般来说,不能。你能在单独的进程中运行库代码,以便在终止时清理所有内存吗?@AndyTurner,只是想知道,为什么不能?因此,即使我将引用设置为null,引用仍然无法被gc清理?@kucing_terbang在回答“我可以清理内存吗?”的问题时说,不行。您不能强制gc回收内存。您甚至不能保证它可以被GC回收,因为库可能会保留您看不到的引用。您可以尝试使用refelection获取singleton的“instance”字段,使其可访问并分配“null”:field f=MailManager.class.getDeclaredField(“instance”);f.setAccessible(真);f.set(null,null)@Andy Turner嗯,很有趣。。你提到你说的话了吗?也许是一个指向医生或你的实验的链接?那太好了。