docker内部的Java进程消耗的内存超过了指定的Xmx限制
我在docker中运行java进程。我已经设置了xms(388m)和xmx(388m)。应用程序启动后,容器的内存消耗超过并达到most~主机内存大小,容器将被终止docker内部的Java进程消耗的内存超过了指定的Xmx限制,java,ubuntu,memory,memory-management,docker,Java,Ubuntu,Memory,Memory Management,Docker,我在docker中运行java进程。我已经设置了xms(388m)和xmx(388m)。应用程序启动后,容器的内存消耗超过并达到most~主机内存大小,容器将被终止 当我使用jprofiler连接到java进程时,我看到堆小于Xmx 但是,容器中的top命令显示了docker stats显示的内容 当我在主机上运行相同的java进程时,它的内存使用量在Xmx边界内 详细信息: Docker版本1.12.1,内部版本23cf638 主机操作系统:Ubuntu 14.04 容器图片:Ubuntu
- 当我使用jprofiler连接到java进程时,我看到堆小于Xmx
- 但是,容器中的top命令显示了
显示的内容docker stats
- 当我在主机上运行相同的java进程时,它的内存使用量在Xmx边界内
docker stats
继续增加,达到~1.2g(主机内存为2g),并在某个点上导致java进程中出现OOM。因此,我假设GC释放的内存不会返回容器OS
感谢您的帮助
编辑:
我错了
我建议将资源限制在docker容器本身。如果您使用docker compose来运行容器,那么可以通过使用-resources标记轻松完成。这样,docker容器从系统中获取的资源量就受到限制。我建议将资源限制在docker容器本身。如果您使用docker compose来运行容器,那么可以通过使用-resources标记轻松完成。这样,docker容器将从系统中获取的资源量是有限的。这可能与有关。这可能与有关。问题说明他们试图用docker限制它,但它只是终止了进程……问题说明他们试图用docker限制它,但它只是终止了进程。。。