一般而言,生产环境的jvm会把Xms和Xmx配置为相等,这样为什么合理?
1)如果二者不等,最开始的时候堆大小是Xms,随着heap内存消耗,jvm很有可能需要申请更大的空间直到Xmx;相似的,jvm在申请到Xmx空间时可能又用不了,这时会缩小jvm空间,这样,虽然可以动态调整jvm堆申请的大小,但是每一次调整都需要一定的系统开销(jvm与os之间)。但是,注意前提——生产环境,生产环境意味着一台机器或者一个容器只有一个服务,独占机器意味着没有必要调整jvm大小,直接分配Xmx就行了。否则每一次调整都可能会有开销。只有在开发环境,比如个人电脑,运行的进程特别多,jvm内存动态调整才可能有必要。
2)另外,在产环境的这一前提下,如果最开始堆大小是Xms,也意味着可能会有比较多的gc,影响性能。