JVM常用参数

java 复制代码
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/my.hprof

如果出现OOM情况,在/home生成my.hprof文件

  1. 注意要保证文件不存在(文件名不重复),否则会生成失败
  2. 性能损耗可以忽略不计,在导出dump时会消耗一定性能,影响时间较短。而且都出现OOM了,这个文件还是很重要的
  3. dump文件的大小一般大于Xmx,如果Xmx很大不建议开启(比如在项目中Flink使用了60个G这种,用dump了也加载不出来)
java 复制代码
-Xms4096M

初始堆内存大小 Java启动时就会申请这么大的堆内存,如果内存不够则无法启动

java 复制代码
-Xmx4096M

最大堆内存大小 Java堆内存可以扩大到多少

Xms和Xmx要不要相同

  • 相同的情况下,JVM内存保持稳定,不会动态调整堆内存大小,没有堆内存调整的性能开销,稳定性较好
  • 不同的情况下,JVM动态调整堆内存大小会带来性能开销,在内存资源较紧张的情况下,可以先使用小的初始内存

目前个人感觉,服务需要稳定运行,内存资源不应该是问题,就算多花点钱扩大内存,在业务运行稳定目前是不值一提的,稳定的JVM比不可测的JVM更为重要

java 复制代码
-XX:+UseG1GC

使用G1垃圾回收器
CMS和G1怎么选择

据查询,在jdk8中,内存8G是一个分界线,低于8G时CMS性能较好,高于8G时G1性能较好,不绝对。

相关推荐
花生了什么事o4 小时前
JVM 垃圾回收:对象如何被判定和回收
java·jvm
程序员雷欧6 小时前
ThreadPoolExecutor 深度解析:从核心参数到源码实现的全面剖析
java·开发语言·jvm
wuminyu10 小时前
JUC包的AQS与JVM的ObjectMonitor机制对比分析
java·linux·c语言·jvm·c++
梦云莓铃 脚后跟法1 天前
从一个真实案例理解 JVM 标量替换
jvm
看浪的路人1 天前
第3讲:手写第一个 MCP Server(Python SDK)
jvm·数据库·oracle
lee_curry1 天前
RuoYi Cloud:Gateway、Auth、System 接入 Prometheus JVM 监控,并练习多副本、滚动升级和故障恢复
jvm·gateway·prometheus
CoderYanger1 天前
Java EE:9.JVM(课件内容-上篇)
java·jvm·程序人生·面试·职场和发展·java-ee·程序员创富
残月心殇 请珍惜枸1 天前
.NET陷阱之五:奇怪的OutOfMemoryException——大对象堆引起的问题与对策
java·jvm·.net
CoderYanger1 天前
Java EE:9.JVM(课件内容-下篇)
java·jvm·程序人生·面试·职场和发展·java-ee·学习方法
TimberWill1 天前
JVM-03-字节码文件
jvm