我們在使用docker來部署java程序的時候常常會發現內存佔有很大的問題,使用docker stats查詢發現java程序佔用了7、8百兆的內存。
第一步開啓jdk的內存限制
開啓內存限制只需要如以下方式運行jar包 :java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap ...
以下是docker
構建文件Dockerfile
FROM openjdk:8-jre-alpine
ADD docker-limit-memory.jar app.jar
ENTRYPOINT ["java","-XX:+UnlockExperimentalVMOptions","-XX:+UseCGroupMemoryLimitForHeap","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
第二步修改docker-compose.yml
version: "2.3"
services:
docker-limit-memory:
image: docker-limit-memory
container_name: docker-limit-memory
ports:
- 8081:8081
restart: always
logging:
driver: "json-file"
options:
max-size: "10k"
max-file: "10"
mem_limit: 400m