`

tomcat memory leak

 
阅读更多

 

tomcat memory leak

 

Mar 18, 2010 11:13:07 PM org.apache.catalina.core.ApplicationContext log
INFO: HTMLManager: stop: Stopping web application at '/testWeb'
Mar 18, 2010 11:13:07 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: A web application appears to have started a thread named [leakingThread] but has failed to stop it. This is very likely to create a memory leak.
public class LeakingServlet extends HttpServlet {
        private Thread leakingThread;

        protected void doGet(HttpServletRequest request,
                        HttpServletResponse response) throws ServletException, IOException {

                if (leakingThread == null) {
                        synchronized (this) {
                                if (leakingThread == null) {
                                        leakingThread = new Thread("leakingThread") {

                                                @Override
                                                public void run() {
                                                        synchronized (this) {
                                                                try {
                                                                        this.wait();
                                                                } catch (InterruptedException e) {
                                                                        e.printStackTrace();
                                                                }
                                                        }
                                                }
                                        };
                                        leakingThread.setDaemon(true);
                                        leakingThread.setContextClassLoader(null);
                                        leakingThread.start();
                                }
                        }
                }
                response.getWriter().println("Hello world!");
        }
}
 需要把子线程的classloader设置为空(eakingThread.setContextClassLoader(null);),
不受主线程的管理,当tomcatstop的时候就不会检测
内存泄露了。
http://wiki.apache.org/tomcat/MemoryLeakProtection#cclThreadSpawnedByWebApp

 

分享到:
评论

相关推荐

    学习tomcat的内存泄漏

    java -verbose:gc -Xloggc:gc.log -XX:+ PrintGCDetails -jar Learn-tomcat-memory-leak-0.0.1-SNAPSHOT.jar 使用jstat命令观察GC的过程 jstat -gc 94223 2000 1000 通过GCViewer工具查看GC日志 为了找到内存泄漏...

    一次使用Eclipse Memory Analyzer分析Tomcat内存溢出

    ### Eclipse Memory Analyzer (MAT) 分析 Tomcat 内存溢出详解 #### 一、引言 在软件开发过程中,特别是在 Java 应用程序中,内存管理是非常关键的一环。当应用程序遭遇 `OutOfMemoryError` 异常时,通常意味着...

    解决tomcat内存溢出的配置方法

    内存溢出(Memory Leak)是这类问题中的常见现象,可能导致服务崩溃,严重影响系统的稳定性和可靠性。本篇将详细介绍如何解决Tomcat内存溢出的问题,以及如何进行相应的配置优化。 首先,我们需要理解什么是内存...

    使用MAT分析Tomcat内存溢出

    在Java开发过程中,Tomcat作为常用的Java应用服务器,有时会遇到内存溢出(Out Of Memory,OOM)的问题,这可能导致应用程序崩溃或者性能急剧下降。内存溢出问题的排查和解决是一项重要的技能。本文将详细讲解如何...

    Web_Leak:TDC 2018演示项目-Java Enterprise Track

    将生成两种类型的遏制: 1- Memory Leak 2- Contenção em Threads一般说明因为它是一个非常简单的Web项目,所以只需上载您选择的容器(Jboss,Tomcat等)并部署该项目即可。 选择容器后,添加引用Web模块...

    Tomcat报错: JDBC unregister 解决办法

    To prevent a memory leak, the JDBC Driver has been forcibly unregistered. ``` 这里,`[web application]`是你的应用名称,`[net.sourceforge.jtds.jdbc.Driver]`是具体的JDBC驱动类名。 解决这个问题有以下...

    tomcat6.0 /7.0安装版内存溢出设置方法

    首先,内存溢出(Memory Leak)通常是因为分配的内存超出了系统可用的内存,或者内存资源无法得到正确释放,导致应用无法正常运行。Tomcat作为Java应用服务器,其Java虚拟机(JVM)分配内存的参数需要特别设置,以...

    Eclipse内存溢出

    内存溢出(Memory Leak)是指程序运行过程中使用的内存超过系统所能提供的最大内存限制时所出现的问题。这种情况通常发生在Java等需要进行垃圾回收的语言中。当应用程序创建的对象没有被适当地释放或回收时,就会...

    JProfiler Helper

    **Finding a Memory Leak (A.2.3)** Detecting and fixing memory leaks is critical for maintaining long-term application stability. Key steps include: - Identifying objects that are retained longer than...

    专题资料(2021-2022年)java面试题知识点总结.doc

    内存泄露(Memory Leak)是指程序在申请内存后,无法释放已不再使用的内存空间,久而久之会导致可用内存耗尽。 JVM内存分为7个区域:程序计数器、虚拟机栈、本地方法栈、堆、方法区、元空间(或永久代)以及直接...

    JVisualVM简介与内存泄漏实战分析

    内存溢出(Memory Leak)是指程序在申请内存后未能释放已经不再使用的内存,导致随着时间推移,可用内存越来越少,最终导致程序或整个系统崩溃的情况。JVisualVM提供了多种工具来帮助开发者定位和解决这类问题。 ##...

    JAVA性能瓶颈和漏洞检测.JProbe.Suite.v7.0.part2

    智能化内存分析:通过Leak Doctor发现可能的内存泄露源; Aggregate Memory Footprint:理解对象创建的实际开销; Reference Graph 和 Instance Detail:跟踪内存使用和对象引用; 垃圾回收分析:检测过多的短期...

    JAVA性能瓶颈和漏洞检测

    智能化内存分析:通过Leak Doctor发现可能的内存泄露源; Aggregate Memory Footprint:理解对象创建的实际开销; Reference Graph 和 Instance Detail:跟踪内存使用和对象引用; 垃圾回收分析:检测过多的短期...

    JAVA性能瓶颈和漏洞检测].JProbe.Suite.v7.0.part1

    智能化内存分析:通过Leak Doctor发现可能的内存泄露源; Aggregate Memory Footprint:理解对象创建的实际开销; Reference Graph 和 Instance Detail:跟踪内存使用和对象引用; 垃圾回收分析:检测过多的短期...

    mat监控工具使用总结

    MAT,全称Memory Analyzer Tool,是Eclipse基金会提供的一款强大的Java内存分析工具,主要用于分析Java应用程序的内存使用情况,特别是对堆内存的深入分析。它能够帮助开发者定位内存泄漏、过大对象以及引用链过长等...

    mat工具测试类

    MAT,全称Memory Analyzer Tool,是Eclipse基金会提供的一个强大的Java堆内存分析工具。它能够帮助开发者检测和解决Java应用程序中的内存泄漏问题,优化内存使用效率。本文将深入探讨MAT工具及其在测试类中的应用。 ...

Global site tag (gtag.js) - Google Analytics