2012-09-27 82 views
0

我试图在调试模式下运行我的Tomcat 7服务器,它几乎启动,但是直接停止。Tomcat服务器内存泄漏

你可以在下面找到一些日志:

INFO: Starting ProtocolHandler ["http-apr-8080"] 
Sep 27, 2012 4:56:04 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 22573 ms 
Sep 27, 2012 4:56:04 PM org.apache.catalina.core.StandardServer await 
SEVERE: StandardServer.await: create[localhost:8005]: 
java.net.BindException: Address already in use: JVM_Bind 
    at java.net.PlainSocketImpl.socketBind(Native Method) 
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359) 
    at java.net.ServerSocket.bind(ServerSocket.java:319) 
    at java.net.ServerSocket.<init>(ServerSocket.java:185) 
    at org.apache.catalina.core.StandardServer.await(StandardServer.java:421) 
    at org.apache.catalina.startup.Catalina.await(Catalina.java:707) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:653) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:304) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432) 
Sep 27, 2012 4:56:04 PM org.apache.coyote.AbstractProtocolHandler pause 
INFO: Pausing ProtocolHandler ["http-apr-8080"] 
Sep 27, 2012 4:56:05 PM org.apache.coyote.AbstractProtocolHandler pause 
INFO: Pausing ProtocolHandler ["ajp-apr-8009"] 
Sep 27, 2012 4:56:05 PM org.apache.catalina.core.StandardService stopInternal 
INFO: Stopping service Catalina 
Sep 27, 2012 4:56:06 PM org.apache.catalina.core.ApplicationContext log 
INFO: SessionListener: contextDestroyed() 
Sep 27, 2012 4:56:06 PM org.apache.catalina.core.ApplicationContext log 
INFO: ContextListener: contextDestroyed() 
Sep 27, 2012 4:56:06 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads 
SEVERE: The web application [/dnweb.myeclipse.bak] appears to have started a thread named [Thread-5] but has failed to stop it. This is very likely to create a memory leak. 
Sep 27, 2012 4:56:07 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads 
SEVERE: The web application [/DNClientWeb] appears to have started a thread named [Thread-2] but has failed to stop it. This is very likely to create a memory leak. 
Sep 27, 2012 4:56:07 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads 
SEVERE: The web application [/DNClientWeb] appears to have started a thread named [Thread-3] but has failed to stop it. This is very likely to create a memory leak. 
Sep 27, 2012 4:56:07 PM org.apache.coyote.AbstractProtocolHandler stop 
INFO: Stopping ProtocolHandler ["http-apr-8080"] 

开始我的服务器时,它回到停止模式。这些是内存泄漏问题。如果是我该如何解决这个问题。

任何sugessions,高度赞赏。谢谢。

回答

2

Tomcat未启动可能是端口已被用作@ThorstenDittmar已经建议的问题,否则Tomcat将会死掉一些OutOfMemoryError

对于内存泄漏,您可以尝试找出哪些实例保留在内存中,并通过查看具有Java可视VM的JVM堆转储来防止垃圾收集旧类加载器。查看this article,它解释了如何找到旧的类加载器和仍然引用它们的实例。在server.xml中的目录

0

确保运行Tomcat所需的所有端口都是免费的。日志消息表明Tomcat尝试使用的端口之一已被另一个应用程序使用。

+0

我使用的MyEclipse只是运行一个应用程序。 – Mdhar9e

+0

正如你可以在这里阅读,Tomcat试图监听端口8005,这是行不通的:'严重:StandardServer.await:创建[localhost:8005]: java.net.BindException:地址已被使用:JVM_Bind'。所以8005端口必须已经被某个程序占用了。 –

+0

如果你在linux上,运行'netstat -tulpen'作为根目录来查看哪个进程占用了这个端口。 –

-1

更改端口 的conf/

<Server port="8005" shutdown="SHUTDOWN" debug="0">