Tomcat应用程序不会释放缓存

时间:2016-03-11 19:41:44

标签: java tomcat caching

我们在AWS云中托管了一个tomcat应用程序。当我分析过去一个月应用服务器的内存趋势时,我发现了一些奇怪的东西。我们的服务器总共有15GB RAM,为HeapSize分配了7GB。我在监控系统中注意到内存利用率很高。当我深入挖掘时,我发现使用的内存是计算包括(mem_used =缓存内存+共享内存+缓冲内存),我们每天都进行tomcat重启,但是当我完全重启系统时,我注意到RAM利用率因为系统重启而降低了缓存。现在,令我困惑的部分是tomcat stop / start应该通过JVM释放所有分配的内存,那么为什么缓存仅在整个系统重启时才释放。在我们反弹之后,tomcat是否会刷新缓存。

1 个答案:

答案 0 :(得分:0)

因为您正在查看的缓存是OS的缓存而不是Tomcat。只要有足够的RAM,Tomcat应用程序在文件系统上读取的所有内容都将由操作系统缓存。

例如,可能会缓存Tomcat安装的servlet-api.jar的内容。对于OS级缓存,此信息只是块或页面。如果RAM足够,那么经常请求的每个块都将保留在缓存中。

在Tomcat停止后,操作系统不会清除此信息,因为缓存也会使启动受益。例如。如果重新启动,则不会再次从磁盘读取JVM可执行文件。