常用环境设置jvm内存
参数解释:
Xms — 堆内存初始大小
Xmx — 堆内存最大值
MetaspaceSize — 永久内存初始大小
MaxMetaspaceSize — 永久内存最大值
-XX:+UseConcMarkSweepGC 使用cms并行垃圾回收机制
内存大小设置:
jstat -gc 进程号 查看OU即是老年代(KB)
根据老年代设置参数
Java堆大小设置,Xms 和 Xmx设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍
永久代 PermSize和MaxPermSize(元空间)设置为老年代存活对象的1.2-1.5倍。
年轻代Xmn的设置为老年代存活对象的1-1.5倍。
老年代的内存大小设置为老年代存活对象的2-3倍。
如果老年代约45M,则配置-XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=64M -Xms180m -Xms180m
宿主机和docker的设置方法:
1、java -jar启动时指定内存大小
java -jar -Xms128M -Xmx256M -XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=128M demo.jar
2、tomcat运行时指定内存大小
Linux下修改%TOMCAT_HOME%/bin/catalina.sh
JAVA_OPTS="-XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -Xms128M -Xmx256M"
3、docker-compose启动时指定jvm
修改dockerfile 添加ENV JAVA_OPTS="-Xms1024M -Xmx1024M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+UseConcMarkSweepGC"
ENTRYPOINT ["/bin/sh", "-c", "java ${JAVA_OPTS} -Duser.timezone=Asia/Shanghai -jar -Xbootclasspath/a:/var/www/order/ cloud-order-web.jar"]
修改docker-compose.yml添加 environment模块,如下示例:
order: build: context: "/data/java-service/order/" dockerfile: "Dockerfile" image: order:v1 environment: - JAVA_OPTS=-Xms1024M -Xmx1024M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+UseConcMarkSweepGC container_name: "order" ports: - "18095:18095" deploy: resources: limits: cpus: "2.00" memory: 1228M reservations: memory: 1126M #env_file: /data/java-service/env_variables restart: always volumes: - "/var/log/docker/order:/var/log/order" - "/data/java-service/order/:/var/www/order/" # 设置容器内用户权限为root privileged: true logging: driver: "json-file" options: max-size: "500m" environment: - TZ=Asia/Shanghai
本文作者:燚林
本文链接:https://www.cnblogs.com/lydongbk/p/17661385.html
版权声明:本作品采用本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步