微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jvm调优

一般在jdk机器上可以通过命令粗略查看jvm当前参数运行状态,根据状态跟应用性质来调整参数

jstat -gcutil jvm的pid号----改命令可查看jvm堆内存分配的使用的百分比情况与普通GC,FULLGC从启动到查看为止所执行的次数以及执行时间

jstat -gacapity jvm的pid好---该命令可查看使用的内存量,与GC时间

当然详细情况需要通过gc日志来分析

tomcat开启GC日志记录

vim bin/catalina.sh  先编辑tomcat启动脚本,加上初始化jvm参数

JAVA_OPTS=‘-xms512m -Xmx4096m -XX:PermSize=64M -XX:MaxNewSize=128m -XX:MaxPermSize=64m -XX:ParallelGCThreads=8 -XX:+UseConcmarkSweepGC -Xloggc:/usr/local/tomcat/logs/tomcat_gc.log‘

重启tomcat

可以使用windows下的gchisto软件把获取到的日志导进去,查看具体性能分析

也可以用在线工具https://gceasy.io/把日志包导进去获取性能分析

根据日志的gc响应时间跟应用类加载对象实例存活时间特点调整jvm参数

一般,如果对象存活时间短,那么可以设置年轻代的大小大,还有就是如果追求响应时间快,也可设置大内存

当年轻代内存大时,普通GC的周期会小,年轻代大,年老代就小,如果此时进入年老代的实例多的话,那么就会进行频繁full gc,由于年老代gc一般是用串行回收器的

所以,full gc的时间就会变长,而在gc的时候,对外是不响应请求的,这样用户体验就不好,还有就是,如果前面还有反向代理的话,反代的后端健康检查失效时间必须要大于gc的时间

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐