前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JVM又爆了,别傻傻只会重启加内存!

JVM又爆了,别傻傻只会重启加内存!

作者头像
Java技术栈
发布2019-10-29 23:54:22
2.1K0
发布2019-10-29 23:54:22
举报
文章被收录于专栏:Java技术栈Java技术栈

前提:某大型跨境电商业务发展非常快,线上机器扩容也很频繁,但是对于线上机器的运行情况,特别是jvm内存的情况,一直没有一个统一的标准来给到各个应用服务的owner。

经过618大促之后,和运维的同学讨论了下,希望将线上服务器的jvm参数标准化,可以以一个统一的方式给到各个应用,提升线上服务器的稳定性,同时减少大家都去调整jvm参数的时间。

参考了之前在淘宝天猫工作的公司的经历:经过大家讨论,根据jdk的版本以及线上机器配置,确定了一个推荐的jvm配置:

配置说明:

1. 堆设置 o -Xms:初始堆大小 o -Xmx:最大堆大小 o -XX:NewSize=n:设置年轻代大小 o -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 o -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5 o -XX:MaxPermSize=n:设置持久代大小

2. 收集器设置

o -XX:+UseSerialGC:设置串行收集器 o -XX:+UseParallelGC:设置并行收集器 o -XX:+UseParalledlOldGC:设置并行年老代收集器 o -XX:+UseConcMarkSweepGC:设置并发收集器

3. 垃圾回收统计信息 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:filename " 4. 并行收集器设置 -XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。 -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间 -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

长期表现

第一个变化:fgc的次数减少,减少了大概一倍以上; mobile工程,调整前基本上一天1-2辆次,调整后基本上就是2-3天一次

总结:

Jvm调优这块还是有一定难度的有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足、内存泄露、线程死锁、Java进程消耗CPU过高。

这些问题在日常开发容易忽视,比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源,但能够理解并解决这些问题是Java程序员进阶的必备要求。

本文将对一些常用的JVM性能调优底层原理进行解析,希望能起抛砖引玉之用。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-27,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 Java技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 长期表现
    • 总结:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    http://www.vxiaotou.com