您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

考虑Policy.getPolicy()的原因是什么,因为它将保留对上下文的静态引用并可能导致内存泄漏

考虑Policy.getPolicy()的原因是什么,因为它将保留对上下文的静态引用并可能导致内存泄漏

Java 6中的Policy类包含对类加载器的静态引用,该类加载器在首次访问该类时会初始化为当前线程上下文类加载器:

private static ClassLoader contextClassLoader;

static {
contextClassLoader =
    (ClassLoader)java.security.AccessController.doPrivileged
            (new java.security.PrivilegedAction() {
            public Object run() {
                return Thread.currentThread().getContextClassLoader();
            }
    });
};

Tomcats生命周期侦听器确保从已知环境中初始化该类,在该环境中,上下文类装入器设置为系统类装入器。如果首先从webapp内部访问此类,它将保留对webapps类加载器的引用。这将防止webapps类获取垃圾,从而导致烫发代空间泄漏。

其他 2022/1/1 18:26:31 有504人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶