java - Tomcat 奇怪的内存使用

标签 java spring tomcat

这是一个模糊的问题。因此,请随时询问任何具体数据。

我们有一个运行着两个网络服务的 tomcat 服务器。一个使用 spring 构建的 tomcat。我们将 mysql 用于 90% 的任务,将 mongo 用于缓存 jsons (10%)。另一个网络服务是使用 grails 编写的。这两种服务都是中型代码库(每个大约 35k 行代码)

计算仅在有 HTTP 请求时发生(无批处理)。每个请求大约有 2000 个数据库命中(我知道它很庞大。我们正在努力)。请求速率约为 30 req/min。对于一个特定的请求,图像处理非常耗费内存。任何地方都没有 JNI

我们发现了一个奇怪的行为。昨晚,我可以确认大约 12 小时没有向服务器发出请求。但是当我查看内存消耗时,它非常困惑: enter image description here

在没有任何请求的情况下,内存不断从 500Mb 跳到 1.2Gb(跳 700Mb 令人担忧)。如前所述,服务器端没有计算。我不确定它是否是内存泄漏:

  1. 内存使用率下降。 (如果内存没有下降,事情会容易得多)。
  2. 此行为可通过基于 SoftReference 的缓存重现。有完整的GC。但我没有在任何地方使用它们(不确定是否有其他东西在使用它)

还有什么原因。这值得担心吗?

PS:最近我们经常发生内存崩溃(不是错误,而是 JVM 崩溃)。

最佳答案

这实际上是正常行为。你只是看到垃圾收集发生了。

关于java - Tomcat 奇怪的内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27615542/

相关文章:

java - getParameterAnnotations 返回空数组

java - 在 Go 中启动 Java 进程

facebook - Grails Spring Security Facebook插件重定向到错误页面

java - 如何同时添加响应id和加入对象

java - Spring表单将空模型对象发送到数据库

java - Spring 3 和 Google App 引擎的问题

java - 在 Spring Boot 中将日期作为请求参数处理出现错误

java - Tomcat 和带有百分号的 URLS

java - 在 tomcat 7 中启用 mod_deflate?

java - 如何在tomcat服务器上启动和调用普通java项目的方法?