监控和限制云代工Java应用程序的内存使用情况

问题描述 投票:1回答:1

我需要限制CloudFoundry上托管的应用程序的使用。

为此,我的Java代码包含存储以下内容的变量

long L1 = Runtime.getRuntime().freeMemory();
long L2 = Runtime.getRuntime().totalMemory();
long L3 = Runtime.getRuntime().maxMemory();

但是,当我在cmd上使用命令cf app并尝试获取值时,它无法接近三个L1,L2,L3值中的任何一个。那么如何在我的Java代码中获取cf app命令输出值?

java spring spring-boot cloudfoundry
1个回答
1
投票

在编写本文时,JVM(java 8和9)不是容器感知的(这应该发生在某些时候,可能是11?)。当您运行函数来查询内存使用情况时,它将返回与运行应用程序的整个计算机或VM相关的信息。

在Cloud Foundry中,您可以通过查看MEMORY_LIMIT环境变量来获取应用程序的内存限制。我认为使用MemoryMXBean,如described here,将是获得当前使用的方法。然后你可以从MEMORY_LIMIT中减去当前的使用量,并得出你与极限接近的近似值。

请注意,由于Cloud Foundry在您的容器中运行几个小进程(主要是pid-0和ssh),因此会有少量开销。虽然开销很小,但我认为最后看起来是25M左右。

© www.soinside.com 2019 - 2024. All rights reserved.