【发布时间】:2019-01-16 23:45:09
【问题描述】:
我在 Spring Boot 中创建了一些服务,我有 11 个胖 jar,我将它们部署在 docker 容器中,我怀疑每个 jar 都消耗了 1 到 1.5 GB 的 RAM 而没有任何使用,我通过运行检查 RAM :
docker stats containername
一开始我以为是java容器,我尝试改成使用alpine的容器,但没有任何改变,所以我认为唯一的问题是我的jar。有没有办法改变 jar 正在使用的 RAM?或者这种行为是正常的,因为每个 jar 都有一个嵌入的 tomcat?或者也许更好地将一些罐子放在一起并将它们部署为战争并且只使用一个tomcat作为一组“罐子”?有人可以分享他/她的经验吗?,
提前致谢。
【问题讨论】:
-
您正在运行哪个图像?如果您在本地运行它,您是否尝试过检查消耗的内存?
-
我正在运行 openjdk:8 并且我尝试使用 openjko:8u171-jdk-alpine3.8 但它没有帮助。让我测试它在本地运行
-
我在本地测试了它们,同样的事情正在发生
-
May this article 可以给我们一些关于这个问题的澄清
-
如果您不告诉您的 JVM 限制其内存使用量,它将使用默认值,这可能非常大。只要有可用的内存,您的垃圾收集器可能就不会做任何事情,即使它做了,它也并不总是返回给系统。这纯粹是Java的工作原理,与Spring boot无关,也不是Spring boot的内存问题。
标签: docker spring-boot