Tun*_*yen 31 java heap-memory docker
提出这个问题时,Docker看起来很新,不能在网上找到这个问题的答案.我找到的唯一一个地方就是这篇文章,其中作者说这很难,就是这样.
haw*_*eye 35
请注意,在docker-compose.yml文件中 - 您需要省略双引号:
environment:
- JVM_OPTS=-Xmx12g -Xms12g -XX:MaxPermSize=1024m
Run Code Online (Sandbox Code Playgroud)
要么
environment:
- CATALINA_OPTS=-Xmx12g -Xms12g -XX:MaxPermSize=1024m
Run Code Online (Sandbox Code Playgroud)
jba*_*eta 34
我同意这取决于你正在使用的容器.如果您使用的是官方Tomcat映像,看起来它很简单,您需要JAVA_OPTS使用堆设置传递环境变量:
docker run --rm -e JAVA_OPTS='-Xmx1g' tomcat
Run Code Online (Sandbox Code Playgroud)
请参见如何设置JVM参数?
occ*_*asl 13
您也可以将这些设置放在图像中,以便Dockerfile中存在以下内容:
ENV JAVA_OPTS="-XX:PermSize=1024m -XX:MaxPermSize=512m"
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以通过在 docker compose 文件中指定 java 选项环境来实现
env:
- name: _JAVA_OPTIONS
value: "-Xmx1g"
Run Code Online (Sandbox Code Playgroud)
它会改变堆大小。
更新:关于这个讨论,Java 已经提高了关于容器支持的游戏。现在(或者更确切地说是从 JVM 版本 10 开始),JVM 足够聪明,可以确定它是否在容器中运行,如果是,则它限制了多少内存。
因此,与其在启动 JVM 时设置固定限制,然后您必须根据容器限制(K8s 世界中的资源限制)的变化进行更改,不如什么都不做,让 JVM 自行计算限制。
无需任何额外配置,JVM 会将最大堆大小设置为已分配内存的 25%。由于这是节俭的,您可能希望通过设置-XX:MaxRAMPercentage属性来提高一点。此外,还有-XX:InitialRAMPercentage初始堆大小和-XX:MinRAMPercentage小于 96MB RAM 的容器。
有关该主题的更多信息,这里有一个很好的概述。
这完全取决于您的Java应用程序如何打包以及如何使用Docker公开其配置文件。
例如官方的tomcat图片指出配置文件位于以下默认位置:/ usr / local / tomcat / conf /
这样很容易覆盖整个目录或仅覆盖一个配置文件:
docker run -it --rm -p 8080:8080 -v $PWD/catalina.properties:/usr/local/tomcat/conf/catalina.properties tomcat:8.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53258 次 |
| 最近记录: |