严重: A web application created a ThreadLocal with key of type [null] (value [com.sun.faces.config.ConfigureListener$1@1c4e792]) and a value of type [null] (value [null]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.
http://confluence.atlassian.com/pages/viewpage.action?pageId=218275753
看看老外的这篇,好像就是在讲这个问题,原因大概是说tomcat 6.025之后引入了一种内存泄露的检查机制,会把不能垃圾收集的对像做日志
第一种解决办法:
使用低于6版本的tomcat
第二种解决办法:
在tomcat的server.xml文件中把
这个监听给关了
如果还解决不了,重启一下机器试试。
PS:http://wiki.apache.org/tomcat/MemoryLeakProtection
分享到:
相关推荐
JavaWeb系列二十二: 线程数据共享和安全(ThreadLocal)
String value = threadLocal.get(); ``` ##### protected T initialValue() **用途**:返回当前线程的初始值。通常情况下,该方法仅在线程首次访问 ThreadLocal 变量时被调用一次。 **示例代码**: ```java ...
### 正确理解ThreadLocal:深入解析其工作原理与应用场景 #### 一、ThreadLocal的基本概念 `ThreadLocal`是Java平台提供的一种线程局部变量的解决方案,它为每一个使用该变量的线程都提供了独立的变量副本,使得每...
这个压缩包 "Quartz-ThreadLocal.rar" 内含的学习资源很可能是关于如何在 Quartz 调度器中结合使用 ThreadLocal 的示例。 Quartz 的核心功能包括: 1. **作业与触发器**:在 Quartz 中,任务被称为“作业”(Job)...
threadLocal.set((int) (Math.random() * 100D)); try { Thread.sleep(2000); } catch (InterruptedException e) { } System.out.println(threadLocal.get()); } } public static void main(String[] args...
通过上述分析,我们可以看出`ThreadLocal.rar`中的代码示例可能涉及了如何创建、设置、获取和清理ThreadLocal变量,以及如何在父子线程之间利用ThreadLocal进行通信。学习并理解ThreadLocal的原理和使用方法对于编写...
threadLocal.set("线程A的值"); // 在线程A中,可以获取到设置的值 System.out.println(threadLocal.get()); // 输出 "线程A的值" // 在线程B中,由于没有设置过值,get()将返回null System.out.println...
ThreadLocal 整理 ThreadLocal 是 Java 中的一个重要组件,它能够在每个线程中保持独立的副本。这个功能是通过 Thread 类中的 threadLocals 属性来实现的,这个属性实际上是一个 Entry 数组,其中的每个 Entry 都...
- 获取线程局部值:`T value = threadLocal.get()` - 移除线程局部值:`threadLocal.remove()` 3. **应用场景**: - 线程上下文信息:例如HTTP请求的用户ID,数据库连接等,这些信息只对当前请求有效,不应该跨...
因此,正确地管理ThreadLocal的生命周期,特别是在Web应用和长生命周期线程中,显得尤为重要。 在JDK 1.8中,ThreadLocal被重写了,使用了一种新的实现方式,即使用弱引用和ThreadLocalMap来存放数据。在旧版本中,...
【ThreadLocal】是Java编程语言中用于处理线程局部变量的一个工具类,它提供了一种在多线程环境中实现线程安全的局部变量的方式。在Java的并发编程中,ThreadLocal是一个非常重要的概念,它可以帮助我们创建独立于...
System.out.println("新线程的值:" + threadLocal.get()); // 输出:null // 新线程设置自己的值 threadLocal.set("新线程的值"); System.out.println("新线程的值:" + threadLocal.get()); // 输出:新线程...
threadLocal.set("Hello, ThreadLocal"); String value = threadLocal.get(); ``` ### 生命周期管理 ThreadLocal的生命周期是与线程绑定的。当线程结束时,与其关联的ThreadLocal变量不会自动清除,可能会导致内存...
【标题】:“线程本地(ThreadLocal):Java.lang.ThreadLocal 的实验性无等待并发实现” 在Java编程中,`ThreadLocal`是一个非常重要的工具类,它提供了线程局部变量的功能。线程局部变量是局限于单个线程的变量,...
threadLocal.set(threadLocal.get() + 1); } public static Integer get() { return threadLocal.get(); } // ... } ``` 在这个例子中,`ThreadLocalTest`类中的`threadLocal`变量为每个线程初始化一个...
学习ThreadLocal,了解其中的原理,以及学习其中的优点!避免坑点!!
ThreadLocal是Java编程语言中的一个线程局部变量类,它为每个线程提供了一个独立的变量副本,使得每个线程可以独立地改变自己的副本,而不会影响其他线程所对应的副本。这个特性在多线程环境下处理并发问题时非常...
Instantiation with a constructor .................................................................. 29 Instantiation with a static factory method .................................................... ...
**线程局部变量(ThreadLocal)是Java编程中一个非常重要的概念,主要用于在多线程环境中为每个线程提供独立的变量副本。ThreadLocal不是一种数据结构,而是一种解决线程间共享数据的方式,它提供了线程安全的局部...
ThreadLocal是Java编程中一种非常特殊的变量类型,它主要用于在多线程环境下为每个线程提供独立的变量副本,从而避免了线程间的数据共享和冲突。然而,ThreadLocal在理解和使用过程中容易产生一些误区,这里我们将...