为什么我设置的虚拟机参数不起作用?

最近在使用spring cloud做微服务架构,然后spring boot打成jar包运行,发现占用的内存过大,基本上都在1.2G~1.5G之间。

然后很多服务都部署在一台服务器上,导致各种服务占用的内存太大,而相互挤占,经常有服务掉线。

为此,我想给虚拟机加参数设置堆内存大小,然后随手一百度,就写出了下面的命令:

错误的写法:

java -jar  xxx.jar -Xms256m -Xmx512m -Xmn128m &

程序算是跑起来了,top一下,发现占的内存还是那么大。

思忖一下,什么垃圾虚拟机,老子设个参数都没用,害人精。

后来google了一下,其实这个问题不怎么好google,你的注意提问内容。

然后在StackOverflow找到了如下回答,醍醐灌顶啊。

虽然这个回答和设置对内存大小没什么相关,但是很有用,大体翻译一下就是:

运行的-jar xxx.jar后面的参数,都是属于jar所代表的应用,而不是属于虚拟机。

像-Xms,-Xmx这种参数都是属于虚拟机的,而不是属于jar所代表的应用,被我自己蠢哭了。

正确的写法:

java -Xms256m -Xmx512m -Xmn128m -jar  xxx.jar &

-jar之前的参数都属于虚拟机,而jar包后面的参数都属于java应用。

也只有虚拟机这种,进程内运行运用才会有这种奇葩情况了。 

枉称java开发。。。。。。

猜你喜欢

转载自www.cnblogs.com/tuhooo/p/9989399.html