天天看點

Docker環境下Java應用的最大記憶體和堆記憶體的設定

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數目,并發線程數等。

繼續閱讀