在 CF-10 上使用服务器监控时,我注意到我公司的一台测试服务器上有一个奇怪的行为。这是服务器上 JVM 内存使用情况的屏幕截图,CF 站点上根本没有发生任何事情,没有任何流量。
正如您所看到的,已用内存稳步上升,直到 GC 启动(我假设)并将已用内存重新降低,然后该过程重复。这会指向某种内存泄漏吗?
在 CF-10 上使用服务器监控时,我注意到我公司的一台测试服务器上有一个奇怪的行为。这是服务器上 JVM 内存使用情况的屏幕截图,CF 站点上根本没有发生任何事情,没有任何流量。
正如您所看到的,已用内存稳步上升,直到 GC 启动(我假设)并将已用内存重新降低,然后该过程重复。这会指向某种内存泄漏吗?
恕我直言,除非您有其他证据,否则这可能是一个健康的服务器。ColdFusion / Tomcat中有一堆后台进程可以清理并记录监控数据(包括将数据提供给您的监控工具:也许这是一种Heisenbehaviour)。这些都在运行时分配内存,并且会逐渐在堆中乱扔垃圾,直到达到阈值,此时会触发次要 GC,并且您的内存会返回到下限。
如果基线(上图中锯齿的底部)在每个连续步骤中都更高,那么对我来说表明内存泄漏的情况。垃圾收集后的点显示仍在使用多少内存,并且在您的图表上看起来坚如磐石。
有关垃圾收集的详细信息
https://www.jaspersoft.com/sunopenjdk-jvm-garbage-collection-tuning-tutorial
另请参阅 Java 7 中使用的 G1 垃圾收集器
http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html
您还可以更改收集垃圾的速率。不建议这样做,但可以这样做。在执行此操作之前,请确保您知道如何恢复 CF JVM 设置
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
你可以建议垃圾收集。不建议这样做,但可以
http://rip747.wordpress.com/2008/09/29/help-force-coldfusion-to-release-memory/