VM选项中设置多个-Xms/-Xmx参数时,哪一个会被采用?
嘿,这个问题问得很到位,刚好我对JVM启动参数的解析逻辑熟得很,给你讲明白:
重复设置-Xms参数时的生效规则
当你在VM选项里配置了两个-Xms参数(比如-Xms256m -Xms1g),最后出现的那个参数会覆盖前面的,成为实际生效的初始堆内存值。JVM在解析启动参数时是按顺序处理的,同类型的参数后面的会直接覆盖前面的设置,就像你给变量多次赋值,最后一次的结果才是最终值一样。
重复设置-Xmx参数时的生效规则
同理,当你写了-Xmx1g -Xmx32g这两个参数时,生效的是最后一个-Xmx32g,它会作为JVM的最大堆内存限制。
这里额外提个小建议:虽然JVM允许这种重复设置的写法,但实际开发中尽量别这么做——毕竟这种很容易让自己或团队伙伴在排查问题时踩坑,谁也不想花半天时间才发现是参数顺序搞的乌龙对吧?
内容的提问来源于stack exchange,提问作者coder
相关产品推荐
相关产品推荐

