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参数

摘抄自:https://blog.youkuaiyun.com/wang379275614/article/details/78471604

### 关于JDK 8中配置和使用JVM参数 #### 设置合理的JVM参数对于提升Java应用程序性能至关重要。当面对不同应用场景时,合理调整这些参数可以显著改善程序运行效率和服务质量。 针对JDK 8版本,在配置JVM参数前应先了解当前系统的具体需求以及硬件条件,从而制定合适的优化策略[^2]。下面是一些常用JVM参数及其作用: - **垃圾回收器的选择** 使用`-XX:+UseG1GC`来启用G1垃圾收集器,这是一种适合处理大容量堆内存的低延迟垃圾收集算法;通过设置`-XX:MaxTenuringThreshold=14`控制对象晋升到老年代所需的年龄阈值;指定并行GC线程数为8(`-XX:ParallelGCThreads=8`) 和并发GC线程数也为8 (`-XX:ConcGCThreads=8`) 来平衡CPU资源分配[^4]。 - **堆内存管理** 调整初始堆大小与最大堆大小,例如 `-Xms512m -Xmx2g` 表示设定最小堆为512MB, 最大堆为2GB。这有助于防止频繁发生Full GC事件的同时确保有足够的空间供应用正常运作。 - **永久代/元空间** 自JDK 8起,永久代已被移除转而采用名为“Metaspace”的新机制存储类元数据信息。由于它直接依赖于操作系统级别的物理内存而非受限于JVM内部定义的最大值,因此理论上不会遭遇PermGen区域常见的OutOfMemoryError异常情况。不过仍需警惕主机剩余RAM不足的情况引发OOM错误[^3]。 为了使上述配置生效,可以在启动Java进程时作为命令行选项传递给java可执行文件,如下所示: ```bash java -server -Xms512m -Xmx2g -XX:+UseG1GC -XX:MaxTenuringThreshold=14 \ -XX:ParallelGCThreads=8 -XX:ConcGCThreads=8 MyApplication ``` 此外,还可以利用环境变量或IDE内置工具来进行更便捷的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值