Docker环境下Java应用的堆内存控制

在部署docker应用, 应用编排时都需要指定一个内存的最大使用上限。如果应用使用的内存超过了配额,镜像会被kill掉。所以java微服务应用,有必要设置应用自己的最大内存。

参数说明设置java最大内存的方式

在Dockerfile里面, 加上”-Xmx800m”类似的参数,表示Heap上限800兆。例如: CMD [“java”, “-Xmx800m”, “-jar”, “icare-open.jar”]
-Xmx是JVM的一个非标准可选参数,指定堆(Heap)的最大值。

参数设置的特别说明

docker镜像的内存上限,不能全部给“-Xmx”。因为JVM消耗的内存不仅仅是Heap,如下图:

Java运行时内存结构

JVM = Heap + Method Area + Constant Pool + Thread Stack * num of thread
Xmx的值设置为镜像上限减去150兆,甚至200兆是一个相对安全的做法。
当然还需要考虑应用自身的特点,比如class数目,并发线程数等。

参考链接

猜你喜欢

转载自blog.csdn.net/kimylrong/article/details/52448589
今日推荐