不知道有没有细心的小伙伴发现,IDEA的启动项(自定义VM选项),或者一些其他代码启动的地方,存在一些不起眼的语句,比如Xms256m -Xmx256m这些,那这些玩意都是啥意思有啥用呢?
我打开浏览器搜索了一下,发现这居然是对于栈堆内存的控制,比如我们看下面这个语句。
-Xms256m -Xmx256m -XX:PermSize=64M -XX:MaxNewSize=64m -XX:MaxPermSize=256m
Xms
-Xms:是初始化堆内存值
Xmx
-Xmx:是堆内存最大值
知道这两个玩意是啥了,那他们有什么用呢?
这两个值是Tomcat
服务器内存分配是动态的最好体现。
为什么这么说呢?
因为刚启动时系统给Tomcat
分配的内存为-Xms
值,当项目占用的内存达到初始化内存的一定比例后(百度上说是80%,我没去试过)才会将给Tomcat
分配-Xmx
大小的内存,反之亦然当项目占用的内存降至-Xmx
的40%时,系统会释放部分内存,又将-Xms
大小的内存划分给tomcat服务器。
那么还有几个其他的字段是啥意思呢?
-XX:PermSize和-XX:MaxPermSize
-XX:PermSize和-XX:MaxPermSize是初始化永久保存区,原理同内存是一样的。
-XX:MAxNewSize
-XX:MAxNewSize是什么意思,我也没去详细搜索过,好像也搜索不到啥,但看到有要求这个值的大小应该设置为
-Xmx
的1/4。
就当作一个知识扩展,了解了解吧。