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数目,并发线程数等。

Categories: Java

发表评论 取消回复

placeholder.jpg

电子邮件地址不会被公开。

Name
Email
Website
What's on your mind?

近期文章
  • Maven deploy部署jar到远程私服仓库
  • java动态代理实现与原理
  • git 常用命令
  • java中观察者模式Observable和Observer
  • Netty解决TCP粘包和拆包问题的四种方案
近期评论
  • 马化腾发表在《Nginx的一些基本功能》
  • geyang发表在《世界,您好!》
  • 一位WordPress评论者发表在《世界,您好!》
分类目录
  • Big Data (5)
  • Java (27)
  • MicroServices (13)
    • GateWay (2)
    • REST (2)
  • Plus (38)
  • Spring (9)
    • Spring Boot (5)
    • Spring Data (4)
  • 中间件/框架 (5)
    • Kafka (3)
  • 数据库 (11)
    • Hbase (5)
    • MongoDb (2)
    • Mysql (3)
标签
apiDoc Drools dubbo fiddler Grafana hbase Hystrix IDEA java JDK jpa jvisualvm jvm kafka linux MongoDB MQTT Mysql Netty nginx OpenJDK Prometheus REST RocketMQ RPC Servlet Sleuth SOA spring boot spring data zookeeper Zuul 域名 微服务 数据结构 日志 爬虫 缓存 股票 设计模式 读书 运维 队列 集合 音乐
联系我

你可能感兴趣的:(Docker环境下Java应用的堆内存控制)