java - 监控和限制 Cloud Foundry Java 应用程序的内存使用情况

标签 java spring spring-boot cloud-foundry

我需要限制 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 命令输出值?

最佳答案

在撰写本文时,JVM(java 8 和 9)不支持容器(不过这应该会在某个时刻发生,也许是 11?)。当您运行函数来查询内存使用情况时,它将返回与运行应用程序的整个计算机或虚拟机相关的信息。

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

请注意,由于 Cloud Foundry 在容器中运行几个小进程(主要是 pid-0 和 ssh),因此会产生少量开销。不过开销很小,我上次看的时候大概是 25M 左右。

关于java - 监控和限制 Cloud Foundry Java 应用程序的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52053833/

相关文章:

java - Spring Web Mvc REST 验证

java - 当我无法输入重复的数据库条目时,如何知道?

java - Spring Android 无法与 Gradle 一起使用

java - 如何在 Spring Boot Controller 之外正确 @Autowire 数据访问对象?

java - 以编程方式部署 Flowable 工作流

java - 异常: Caused by: org. springframework.beans.factory.BeanCreationException:创建名称为 'httpPutFormContentFilter'的bean时出错

java - 如何从 Android 调用 WordNet? [Android 版 Wordnet API]

java - 对象数组的每个组合

java - 使用 Selenium Webdriver 下载 Excel 时如何处理 Firefox 中的下载弹出窗口

java - Hibernate中内部类的实体没有默认构造函数