今天学习的是设置堆大小的参数:
- Xmx
- xms
- InitialHeapSize
- MaxHeapSize
- Xmx和MaxHeapSize是等价的,都是设置堆的最大值,比如-Xmx100M和-XX:MaxHeapSize=100M是等价的
- xms和InitialHeapSize是等价的,都是设置堆的初始值(最小值),比如-xms100M和-XX:InitialHeapSize=100M是等价的
- 一般情况下,在生产环境中,初始堆大小-xms与最大堆大小-Xmx被设置为相等。-Xmx不能比-xms小,如果小的话,进程会起不起来。假设如果在生产环境中,初始堆大小-xms与最大堆大小-Xmx是不等的,那么JVM就会根据堆内存的使用情况,动态的向操作系统申请内存,扩大或者是缩小,以-Xmx和-xms的值为上下界,这里的每一次调整都会产生一定的系统开销,虽然做到了动态申请堆大小的能力,不过生产环境中,很少说一台机器跑好多个JAVA程序,一般情况下都是一对一,那么动态申请调整堆大小就没有意义了,因为不管内存申请的多还是少,都只是这个JAVA程序在用,不需要给其他的程序腾出空间,相反的,如果把初始堆大小-xms与最大堆大小-Xmx设置成不相等,那么反而画蛇添足,因为如果初始堆大小-xms与最大堆大小-Xmx不相等,那么就会需要申请空间时,而每次申请空间,就会产生相应的系统开销,同时如果一开始堆大小是-xms,会增加程序运行时进行gc的次数,降低程序的性能。
- -xms必须不小于1M
参考链接:https://blog.csdn.net/weixin_38106322/article/details/108197030
https://tool.lu/index.php/en_US/deck/kD/detail
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。