【发布时间】:2014-08-06 23:57:47
【问题描述】:
我正在使用 YourKit Java Profiler 分析我的 web 应用程序。 webapp 在 tomcat 7 v30 上运行,我可以看到 JVM 的堆约为 30 兆字节,但 Tomcat.exe 正在使用 200 兆字节并且不断上升。
截图:http://i.imgur.com/Zh9NGJ1.png (左边是 Java 使用了多少内存分析器,右边是 Windows 对 tomcat.exe 的使用)
我尝试向 tomcat 添加不同的标志,但内存使用量仍然不断上升。我也尝试过预编译我的 .jsp 文件以防万一,但它没有。
我添加到 tomcat 的 java 标志中的标志:
-XX:+UseG1GC
-XX:MinHeapFreeRatio=10
-XX:MaxHeapFreeRatio=10
-XX:GCTimeRatio=1
如果这很重要的话,Tomcat 也可以作为 Windows 服务运行。
我需要帮助来弄清楚如何让 tomcat 使用更少的内存/知道它为什么使用这么多内存。就像现在一样,它会一直运行,直到它使用整个系统的内存。
【问题讨论】:
-
您是否在使用任何本机 (jni) 库?
-
我不这么认为,但我们正在使用很多库,因此其中一个或多个库可能正在使用一些 JNI 代码。有没有一种简单的方法来调试这是否是问题?
-
使用 jvisualvm 查看内存占用情况。
-
windows报告的内存增长了多少?它是趋于平稳还是无限增长?
-
@ScaryWombat 我正在使用 YourKit Java Profiler,它目前表示 Java 在运行时使用了大约 30-40 兆,并且内存中没有太多东西。但是 tomcat 进程当前同时使用 250 兆字节的内存,并且在 Java Profiler 仍然显示 Java 内存使用量没有上升时一直在上升。
标签: java tomcat memory-management jvm tomcat7