java - 线程将随着时间的推移而更新,以尝试避免可能的内存泄漏

标签 java spring multithreading grails memory-leaks

我尝试部署我的 war 文件。

但是部署成功后。

我得到这个日志:

[root@dfdfdf bin]# export JAVA_HOME="/usr/java/jdk1.8.0_112/"
[root@dfdfdfdbin]# ./startup.sh
Using CATALINA_BASE:   /root/apache-tomcat-8.5.8
Using CATALINA_HOME:   /root/apache-tomcat-8.5.8
Using CATALINA_TMPDIR: /root/apache-tomcat-8.5.8/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_112/
Using CLASSPATH:       /root/apache-tomcat-8.5.8/bin/bootstrap.jar:/root/apache-tomcat-8.5.8/bin/tomcat-juli.jar
Tomcat started.
[root@satubangau bin]# tail -f ../logs/catalina.out
06-Feb-2017 07:21:27.881 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [ROOT] created a ThreadLocal with key of type [org.springframework.core.NamedThreadLocal] (value [Request attributes]) and a value of type [org.grails.web.servlet.mvc.GrailsWebRequest] (value [ServletWebRequest: uri=/error]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
06-Feb-2017 07:21:27.986 INFO [Thread-17] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-80"]
06-Feb-2017 07:21:27.988 INFO [Thread-17] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["https-jsse-nio-443"]
06-Feb-2017 07:21:27.994 INFO [Thread-17] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-nio-8009"]
06-Feb-2017 07:21:27.995 INFO [Thread-17] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-80"]
06-Feb-2017 07:21:27.996 INFO [Thread-17] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["https-jsse-nio-443"]
06-Feb-2017 07:21:27.997 INFO [Thread-17] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["ajp-nio-8009"]
/root/apache-tomcat-8.5.8/bin/catalina.sh: line 434: /usr/java/jdk1.8.0_111/bin/java: No such file or directory
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=256m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
06-Feb-2017 07:54:26.688 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.5.8
06-Feb-2017 07:54:26.691 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Nov 3 2016 21:14:13 UTC
06-Feb-2017 07:54:26.692 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.5.8.0
06-Feb-2017 07:54:26.692 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
06-Feb-2017 07:54:26.694 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.0.4-042stab120.16
06-Feb-2017 07:54:26.694 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
06-Feb-2017 07:54:26.694 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/java/jdk1.8.0_112/jre
06-Feb-2017 07:54:26.695 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_112-b15
06-Feb-2017 07:54:26.695 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
06-Feb-2017 07:54:26.695 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /root/apache-tomcat-8.5.8
06-Feb-2017 07:54:26.696 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /root/apache-tomcat-8.5.8
06-Feb-2017 07:54:26.697 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/root/apache-tomcat-8.5.8/conf/logging.properties
06-Feb-2017 07:54:26.697 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
06-Feb-2017 07:54:26.698 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
06-Feb-2017 07:54:26.699 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
06-Feb-2017 07:54:26.700 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms256m
06-Feb-2017 07:54:26.700 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx512M
06-Feb-2017 07:54:26.700 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:PermSize=256m
06-Feb-2017 07:54:26.701 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxPermSize=256m
06-Feb-2017 07:54:26.701 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:-UseGCOverheadLimit
06-Feb-2017 07:54:26.703 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:-PrintGCDetails
06-Feb-2017 07:54:26.703 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.awt.headless=true
06-Feb-2017 07:54:26.703 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dfile.encoding=UTF-8
06-Feb-2017 07:54:26.703 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/root/apache-tomcat-8.5.8
06-Feb-2017 07:54:26.777 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/root/apache-tomcat-8.5.8
06-Feb-2017 07:54:26.777 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/root/apache-tomcat-8.5.8/temp
06-Feb-2017 07:54:26.777 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
06-Feb-2017 07:54:27.777 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-80"]
06-Feb-2017 07:54:27.882 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
06-Feb-2017 07:54:27.887 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["https-jsse-nio-443"]
06-Feb-2017 07:54:29.784 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
06-Feb-2017 07:54:29.790 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
06-Feb-2017 07:54:29.792 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
06-Feb-2017 07:54:29.795 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 6017 ms
06-Feb-2017 07:54:29.986 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina
06-Feb-2017 07:54:29.987 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.8
06-Feb-2017 07:54:30.098 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive /root/apache-tomcat-8.5.8/webapps/ROOT.war
06-Feb-2017 07:55:07.702 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

Configuring Spring Security Core ...
... finished configuring Spring Security Core

看到这一行
06-Feb-2017 07:21:27.881 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [ROOT] created a ThreadLocal with key of type [org.springframework.core.NamedThreadLocal] (value [Request attributes]) and a value of type [org.grails.web.servlet.mvc.GrailsWebRequest] (value [ServletWebRequest: uri=/error]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
我不知道为什么会收到此日志,但我使用的是 grails 3.1.1 。

我想知道,这条消息是在说我的Applicationserver的情况。

最佳答案

我已经遇到了同样的问题,也从 Here 得到了解决方案.此问题发生在应用程序服务器中。但是,应用服务器也与 memcached 服务器进行通信。经过观察,得到memcached服务器内存已满。重新启动 memcached 后一切正常。

如果你使用的是Redis,也可以检查一下。

关于java - 线程将随着时间的推移而更新,以尝试避免可能的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42063002/

相关文章:

Java Thread 和 class.loader/class.forname 有助于理解

java - FOP 驱动程序配置与 FOPFactory 相同

java - eclipse动态web项目默认起始页

java - Java中是否可以@Query两个微服务数据库?

java - ID值没有自动生成

Java 安卓 :Send data from one thead to another thread

java - oauth 消费者 key 和消费者 secret 注册

java - 以编程方式绘制选择器

java - 如何使用<表单:input> for NOT form object

android - 从未调用 AsyncTask onPostExecute() + W/art : Suspending all threads took: 1. 1ms