Docker環境下Java應用的最大內存和堆內存的設置
1、 設置應用允許使用的最大內存
通過docker run(創建一個新的容器並運行)命令中設置-m來進行設置。案例如下所示。
docker run -d --name test-service -m 800m --env LOG_LEVEL=ERROR -e "spring.profiles.active=dev" -p 8090:8090 test-service
2、設置最大堆內存
在Dockerfile里面,設置”-Xmx”參數。-Xmx用於指定堆(Heap)的最大值。案例如下所示。
CMD ["java", "-Xmx600m", "-jar", "/usr/local/test/data/test-1.0-SNAPSHOT.jar"]
注意:
docker鏡像服務的內存不能全部給“-Xmx”,因為JVM消耗的內存不僅僅是Heap。
JVM = Heap + Method Area +Constant Pool + Thread Stack * num of thread 。
Xmx的值可設置為鏡像上限減去150m或200m。當然還需要考慮應用自身的特點,比如class數目,並發線程數等。