我有几个在Windows 2008 R2 Server上运行的tomcat,它们都配置为使用2G作为-Xmx和256m作为-XX:MaxPermSize。
在Windows任务管理器中我可以看到其中一些tomcat使用了高达4G的内存,这会一直触发我们的监控系统。
什么可能导致内存使用率过高,或者这是正常现象?
答案1
操作系统将报告 JVM 使用的内存 + 程序使用的内存。因此,它始终会高于 JVM 报告的内存使用量。JVM 本身需要一定量的内存才能执行程序,操作系统无法分辨出差异。
不幸的是,使用系统内存工具并不是跟踪程序内存消耗的非常精确的方法。JVM 通常会分配大块内存,因此对象创建速度很快,但这并不意味着您的程序正在消耗这些内存。
了解程序实际执行情况的更好方法是运行 jconsole 并查看内存使用情况。这是一个查看内存的非常简单且易于设置的工具。
这是 chubbsondubs 对类似问题的回答这里这可能与您看到大量 RAM 的原因有关,可能包括应用程序的 RAM 使用情况?他还提供了有关如何更有效地检查的建议。
威廉