jdk8以上jvm常用参数

这几天一直在折腾jvm调优的事情。作为新手,把自己遇到的问题记录下来。调整jvm参数的方法有很多,网上也到处是,我也看了很多,选择用tomcat进行jvm参数设置。

linux服务器配置:

linux系统下的tomcat通过startup.sh启动的

所以我们在catalina.sh正式代码开始之前加上

JAVA_OPTS="-Xms****m -Xmx****m -XX:MetaspaceSize=***m -XX:MaxMetaspaceSize=***m -XX:CompressedClassSpaceSize=***m"

值得注意的是我使用的是jdk1.8以上,所以Metaspace代替了之前的Perm。Metaspace使用的是物理内存,而不是像perm从heap中分割出来一部分。而且metaspace会动态扩展,但是我们仍然设置限制一下他的大小,以免系统内存全都被它耗干。

当然,还可以加其他参数,在文章最后将摘抄一波jvm的配置,以供查阅、添加。

应用服务器一般内存的80%都用于服务于我们的项目,所以可以设置最大容量为内存的80%。如果是你本地的pc,还是自己斟酌。然后有人说新老生代比例为1:2 这个我觉得结合实际情况出发。如果项目上大部分程序的对象都存活不短不长,比如15次youngGC后转为老生代,搞不好正好其实如果多等几下没准就被yongGC掉了,没必要进入老年代,一般如果这种情况还比较多的话,最好还是要增大一些新生代大小,防止多次gc而变为年老代。所以还是结合实际情况。

windows下的tomcat调整jvm参数:

修改catalina.bat

添加:set JAVA_OPTS=-server -Xms***m -Xmx****m -Xmn***m -XX:MetaspaceSize=****m -XX:MaxMetaspaceSize=***m -XX:CompressedClassSpaceSize=**m

如上同理

值得注意的是,我们加在了catalina.bat下,我们只能是通过批处理文件(也就是startup.bat)打开tomcat, 我试过如果在idea中直接运行项目的话,好像并没有把项目跑起来,除非把项目扔到了webapps中,但是我在idea中的项目并没有放在tomcat的webapps中,因为想用idea的java代码热部署的功能。所以要改的话只能在idea中tomcat的configuration中VM options:中添加jvm的配置信息。添加之后,运行项目,可以看到项目跑起来了,而且打开jvisualVM查看gc,我们发现配置已经生效了。

当然网上还有教程说tomcat是安装版的,教程跟解压版的不大一样,由于我的是解压版的,所以我也没试过安装版。

下面摘抄一波jvm参数

jdk8以上jvm常用参数_第1张图片

jdk8以上jvm常用参数_第2张图片

jdk8以上jvm常用参数_第3张图片

jdk8以上jvm常用参数_第4张图片

摘抄自:https://blog.csdn.net/wang379275614/article/details/78471604

你可能感兴趣的:(java)