首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用不同的类加载器加载类,以便在不需要时将其从JVM中卸载

使用不同的类加载器加载类,以便在不需要时将其从JVM中卸载
EN

Stack Overflow用户
提问于 2011-09-09 02:26:17
回答 1查看 1.3K关注 0票数 0

在我的应用程序中,我使用ServiceLoader加载具有不同ClassLoaders的模块(来自.jar文件的类),以便在不需要时从应用程序上下文和ClassLoaders本身完全卸载它们。我知道“从JVM卸载类”可能不是一个常见的话题,但有一些条件会发生这种情况,所以我做出了必要的努力。为了确保一切都像预期的那样工作,我使用-XX:+TraceClassLoading和-XX:+TraceClassUnloading跟踪类的加载和卸载,来自此参数的信息显示我可以从mi app和JVM本身完全卸载任何模块(从JVM卸载发生在完整的GC期间)。所有这些看起来都很好..。但是我的问题是,为什么.jars不能删除加载模块类的.jar文件,但是JVM说已经从其中卸载了类。显然,这是在JVM执行期间进行的,但是如果JVM没有从.jar文件加载类,为什么要保持打开这些文件呢?有什么办法可以强制JVM释放这些.jar文件呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-09 04:20:19

类加载/卸载的问题应该在不同的web容器中深入研究。

一些谷歌搜索显示,Tomcat6.x有选项antiJARLocking,该选项在http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/的Tomcat源代码中使用

请阅读源代码,您将在那里获得加载/卸载代码的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7352739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档