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