【发布时间】:2018-08-30 03:43:03
【问题描述】:
我正在使用 java 9 和 tomcat 7.0.73 运行我的 java 应用程序,并且在我的 catalina.out 文件中得到关注。
- 有什么办法可以避免这种情况吗?
- 能否请您帮助我了解此错误的影响。我的应用程序正在正常运行。
- 还有为什么在tomcat启动时会创建GC守护线程,是否可以配置?
这是 catalina.out 文件中的错误。
Mar 10, 2018 2:09:39 AM org.apache.catalina.core.JreMemoryLeakPreventionListener lifecycleEvent
SEVERE: Failed to trigger creation of the GC Daemon thread during Tomcat start to prevent possible memory leaks. This is expected on non-Sun JVMs.
java.lang.ClassNotFoundException: sun.misc.GC
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:292)
at org.apache.catalina.core.JreMemoryLeakPreventionListener.lifecycleEvent(JreMemoryLeakPreventionListener.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:388)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:101)
at org.apache.catalina.startup.Catalina.load(Catalina.java:642)
at org.apache.catalina.startup.Catalina.load(Catalina.java:667)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:253)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)
我用的是官方的oracle jdk
/usr/local/java/jdk9/bin/java --version
java 9.0.4
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
【问题讨论】:
-
你用的是官方的Oracle JDK吗?
-
是的,我使用的是官方的 oracle jdk
-
使用较新的 tomcat 或较旧的 Java。
-
你能帮我理解这件事的影响吗?我的应用程序正在正常运行。你也知道为什么在tomcat启动时会创建GC daemon线程吗
-
sun.misc.GC是旧版本中的 JDK 内部类,它不再存在。 Tomcat 不应该尝试直接使用它。您是否尝试过更新版本的 Tomcat?我认为需要 Tomcat 9 才能在 JDK 9 或更高版本上运行。
标签: java tomcat tomcat7 java-9