Tag: cloudfoundry

限制Java进程的总内存消耗(在Cloud Foundry中)

与这两个问题相关: 如何设置JVM的最大内存使用量? 什么会导致java进程大大超过Xmx或Xss限制? 我在Cloud Foundry上运行Java应用程序,需要确保不超过分配的内存。 否则,这是当前的问题,该进程被Cloud Foundry监视机制(Linux CGROUP)杀死。 Java Buildpack自动为-Xmx和-Xss设置合理的值。 通过调整参数并配置(最大)预期线程数,我非常确定Java进程消耗的内存应该小于我分配给Cloud Foundry应用程序的上限。 但是,我仍然遇到Cloud Foundry“内存不足”错误( 不是 Java OOM错误!): index: 3, reason: CRASHED, exit_description: out of memory, exit_status: 255 我试验了MALLOC_ARENA_MAX设置。 将值设置为1或2会导致启动缓慢。 在MALLOC_ARENA_MAX=4我仍然看到如上所述的错误,因此这不是我的问题的解决方案。 目前我使用非常紧凑的内存设置进行测试,以便更容易重现问题。 但是,即使这样,我也要等待大约20-25分钟才能发生错误。 我必须指定哪些参数和/或环境变量,以确保我的Java进程永远不会超过某个内存限制? 如果应用程序实际需要更多内存,则可以使用Java OOM错误。 有关MALLOC_ARENA_MAX更多信息: https://github.com/cloudfoundry/java-buildpack/pull/160 https://www.infobright.com/index.php/malloc_arena_max/#.VmgdprgrJaQ https://www.ibm.com/developerworks/community/blogs/kevgrig/entry/linux_glibc_2_10_rhel_6_malloc_may_show_excessive_virtual_memory_usage?lang=en 编辑:可能的解释是: http : //www.evanjones.ca/java-bytebuffer-leak.html 。 正如我目前在执行大量传出的HTTP / REST请求时看到的OOM问题,这些缓冲区可能是罪魁祸首。