tomcat 内存泄露的问题,让人很纠结!

2019-03-25 13:42|来源: 网路

最近很纠结,1月初发现tomcat经常重启,打堆栈发现竟是内存泄露,这几天认认真真的把部署在上面的所有模块一一进行了一次排查,没有发现令人可疑的地方。缓存没有问题,没有静态容器,哪位高手看看我该从哪一方面下手,谢谢了!

相关问答

更多
  • 检查一下Catalina.bat文件,在每个“%_RUNJAVA%”后面都应该有“%CATALINA_OPTS%” 有的Catalina.bat文件在“%_RUNJAVA%”后面跟着“%JAVA_OPTS%”, 如果是这样,你应该设置: set JAVA_OPTS=-Xms30m -Xmx512m 或者在每个“%_RUNJAVA%”后面加上“%CATALINA_OPTS%”
  • 导致宕机的原因主要是tomcat的jvm内存大小设置的问题。 如果要在myeclipse中启动tomcat,修改一下tomcat的java虚拟机的内存大小,可如下设置: Myeclipse->preferences->myeclipse->servers->tomcat->tomcat×.×->JDK面板中的 Optional Java VM arguments中添加:-Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m 把虚拟机内存改大点应该就可以 ...
  • 检查一下Catalina.bat文件,在每个“%_RUNJAVA%”后面都应该有“%CATALINA_OPTS%” 有的Catalina.bat文件在“%_RUNJAVA%”后面跟着“%JAVA_OPTS%”, 如果是这样,你应该设置: set JAVA_OPTS=-Xms30m -Xmx512m 或者在每个“%_RUNJAVA%”后面加上“%CATALINA_OPTS%”
  • Windows下,在文件/bin/catalina.bat,Linux下,在文件/bin/catalina.sh的前面,增加如下设置: JAVA_OPTS=-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】 JAVA_OPTS 这个是TOMCAT已经定义好的名字,你只需要将 JAVA_OPTS=-Xms256m -Xmx512m这句话,添加到 catalina.bat(windows) set JAVA_OPTS=-Xms256m -Xmx512m catalina.sh(linux) JAVA_O ...
  • 您可以使用属于JDK的VisualVM - 可以从visualvm.java.net/下载更新的版本。 或者,您可以使用NetBeans中的集成分析器,它与VisualVM基本相同,只是具有一些附加功能。 You can use VisualVM which is part of the JDK - more recent versions can be downloaded from visualvm.java.net/. Or you can use the integrated profiler fr ...
  • 在同一个JVM中,一切都共享相同的内存。 没有系统可以分配单独的池或配额。 如果您的某个应用程序在这方面表现得非常糟糕,那么您唯一能做的就是将其隔离到独立的JVM(单独的Tomcat)中。 Within the same JVM everything shares the the same memory. There is no system to allocate separate pools or quota. If one of your applications behaves really bad ...
  • 是的,当然了。 它必须将数据存储在某个地方 。 记忆是最好和最快的地方。 Java代码中的每个创建的对象实例/原始值都将存储在内存中。 如果您遇到问题,请增加Tomcat的可用内存或分析 Web应用程序的代码并相应地修复内存泄漏/低效问题。 您还可以考虑在关系数据库中存储大型和更永久的数据,并在HTTP请求的基础上仅加载相关数据。 更新 :如果您使用的是Netbeans,则可以使用内置的分析器在开发过程中分析Web应用程序: http : //profiler.netbeans.org 。 此外,您可以使用 ...
  • 如果您需要编译Tomcat,那么Tomcat在运行时提供的jar应该按provided范围provided ,但是期望Tomcat容器在运行时提供它们,例如 javax.servlet javax.servlet-api 3.0.1 provided