当前位置: 首页 > 知识库问答 >
问题:

docker容器中的Java内存设置

贲功
2023-03-14

我有一个Java应用程序,基于Java8 OpenJDK。它运行在一个限制为20GB的docker容器中。

tomcat的-xms和-xmx设置如下:

-xms=容器内存的60%(由cgroup指定)-so 12gb-xmx=容器内存的80%(由cgroup指定)-so 16gb

通常情况下是使用MaxRAM还是-xmx,还是两者都设置有什么好处?

如果我使用MaxRAM而不是-xmx,java将如何为堆分配内存?有没有一个简单的算法对此,例如,50%的MaxRAM设置?java这样做会更有效地管理内存吗?

共有1个答案

陆才俊
2023-03-14

一般来说,对于内存限制为20GB的容器,设置-xmx设置是否太高

看情况.应用程序可以使用比指定的-xmx更少的RAM,也可以使用比指定的-xmx多2倍或3倍的RAM。这两种应用程序我都见过很多。

查看Java进程中哪些占用内存。

 类似资料:
  • 我们已经封装了一个JVM(Scala)应用程序Java1.7,并试图决定如何分配内存。我们在docker容器中运行了一个应用程序。如果为docker容器分配了4GB的RAM,那么我们是否应该为JVM分配4GB(或者为了安全起见稍微少一点)? 据我所知,除了从入口点调用的进程之外,docker容器中没有其他进程在运行,所以我们不需要担心非JVM内存的使用--这是真的吗,还是过于简化了?我们还有其他问

  • 问题内容: 带有 Windows的Docker桌面的Docker Windows容器是否具有默认内存限制?我有一个在容器中运行时崩溃的应用程序,但是当我尝试为命令指定参数时,它似乎运行良好。至少在以前崩溃的情况下。这给我的印象是有默认的内存限制,但是我在文档中找不到它。所以我的问题是是否存在内存限制,并且是否在记录的地方? 问题答案: 根据关于Windows的Docker Github问题的讨论(

  • 问题内容: 我有一个Wordpress / MySQL docker容器,用于开发主题和插件。我在localhost:8000上访问它。 它使用了Gulp构建过程,我正在尝试将browsersync添加到组合中。我很难让browsersync真正代理出容器。从Gulp输出中,我可以看到它正在生成更改,只是实际上并未在浏览器中进行任何更改。 这是我的docker-compose.yml,gulpfi

  • 问题内容: 我有1个进程写入docker容器中共享内存的特定部分(即“ / falcon”)。 Docker映像:dockersharedmemory / shmclient 我有另一个进程,它最初在另一个Docker容器中每秒创建和读取共享内存的同一部分(即“ / falcon”)。 Docker映像:dockersharedmemory / shmserver 使用以下命令运行两个容器时,我可

  • 在提出这个问题时,Docker看起来很新,以至于在网上没有这个问题的答案。我唯一找到的地方是这篇文章,作者在文章中说这很难,就是这样。