我找到了答案和解决方法。
基于本文和这篇惊人的相关文章,使用它是一个坏习惯,
Class.forName(className, true,classLoader)因为它使类无限期地保留在内存中。
解决方案是改为使用
classLoader.loadClass(clasName),然后在完成后取消引用
classLoader并使用以下方法调用垃圾收集器:
classLoader = null;System.gc();
希望这对别人有帮助!:)
背景信息:
我的项目很复杂:我们有一台GWT服务器充当另一台服务器的RMI客户端。因此,要创建实例,GWT需要从服务器下载类并加载它们。稍后,GWT会将实例重新发送到服务器,以使用Hibernate将其持久化到数据库中。为了支持热部署,我们选择了动态类加载,用户可以上传一个jar,并通知服务器从中加载类并将其提供给GWT服务器。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)