一次年轻代GC长暂停问题的解决与思考丨PerfMa 技术社区每周精选【2020 第 31 期】

阅读: 评论:0

一次年轻代GC长暂停问题的解决与思考丨PerfMa 技术社区每周精选【2020 第 31 期】

一次年轻代GC长暂停问题的解决与思考丨PerfMa 技术社区每周精选【2020 第 31 期】

本周精选分享了一次 Java 进程 OOM 的排查分析,一次年轻代GC长暂停问题的解决与思考文章内容,问答部分分享了生产环境YGC 1分钟一次,FGC1小时一次相关问题...欲了解更多性能相关文章与求助,请看 PerfMa 技术社区!

本周精选文章:

一次 Java 进程 OOM 的排查分析(glibc 篇)  java oom

作者:挖坑的张师傅

前段时间有同学反馈一个 java RPC 项目在容器中启动完没多久就因为容器内存超过配额 1500M 被杀。JVM 启动完通过 top 看到的 RES 内存就已经超过了 1.5G,首先想到查看内存的分布情况,发现进程占用的堆内存只有 300M 左右,非堆(non-heap)也很小,加起来才 500 M 左右,那内存被谁消耗了。

一次年轻代GC长暂停问题的解决与思考   java gc

作者:空无H

公司某规则引擎系统,在每次发版启动会手动预热,预热完成当流量切进来之后会偶发的出现一次长达1-2秒的年轻代GC(流量并不大,并且LB下的每一台服务都会出现该情况)在这次长暂停之后,每一次的年轻代GC暂停时间又都恢复在20-100ms以内,2s虽然看起来不长,但是对比规则引擎每次10ms左右的响应时间来说,还是不可以接受的;并且由于该规则引擎响应超时,还会导致出单超时失败。

一次艰难的内存泄露排查,BeanUtils的锅  内存泄漏  java 

作者:landon30

通过jstat -gcutil pid 5000 ,发现fgc次数很多而且频繁,此时老年代占比已经大约70%左右,且已经回收不了内存,我们这边设置的fgc阈值是老年代的70%。此时因为还有30%的老年空间,所以整体内存相对还算稳定,CPU也比较稳定,但是有很大的潜在的风险,就是内存一直上涨,不释放。

本周精选问题:

jdk的反射机制是否真的耗时

问题描述

从method.invoke方法一路追源码,发现只有当调用的次数达到一个阀值(16)后,才由native code实现的nativemethodaccessorimpl类转成java实现的methodaccessorgenerator类!

回复

[风吹屁屁凉]:native code的好处是不用生成类,通过jni可以直接访问执行,因为涉及到native操作,所以开销会比较大,生成java类之后,整个效率会得到比较大的提升,JVM里针对反射也会有一些特殊的处理,比如反射类加载器预分配内存会比正常的类加载器也会小。

生产环境YGC 1分钟一次,FGC1小时一次

问题描述

我的服务是api接口,io密集型的,本地用了本地缓存发布pgc内容,然后每个请求都会用clone方式copy pgc内容,然后设置自己的是否订阅是否收藏等信息,jvm配置如下,系统为8核16g,centos6。

-server
-Xmx3G
-Xms2G
-Xmn2G
-XX:+DisableExplicitGC
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=80
-Xloggc:/home/hottopic/logs/ts-cc-api/gc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintTenuringDistribution
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/home/hottopic/logs/ts-cc-api/java_heapdump.hprof

回复1

[墨书]:GC都算正常,没啥问题。CMS本身没有这种一小时触发一次的机制,只要CMS的init和remark的耗时不长,就没啥问题。

回复2

[系统随机生产昵称]:1、这个old初始大小如果是1g,估计触发的会少一些。

2、你这个触发cms都是老年代占用到了80%。

本周精选 JVM 参数:

UseParNewGC 参数讨论专区

参数说明

Use parallel threads in the new generation

讨论

[帝都异乡人]:指定在 New Generation 使用 parallel collector, 是 UseParallelGC 的 gc 的升级版本 , 有更好的性能或者优点 , 可以和 CMS gc 一起使用。

PrintGCApplicationStoppedTime 参数讨论专区

参数说明

Print the time the application has been stopped

讨论

[Chilam]:打印垃圾收集时 , 系统的停顿时间 , 如 :Total time for which application threads were stopped: 0.0225920 seconds

本周热点资讯:

英特尔推出全新机器自动编程系统

英特尔与麻省理工学院(MIT)以及乔治亚理工学院(Georgia Tech)共同推出了一种新的机器编程(machine programming,MP)系统。该系统称为机器推断代码相似性(machine inferred code similarity,MISIM),是一种自动化引擎,旨在通过研究代码的结构、并分析具有类似行为的其他代码的句法差异,来了解某个软件的意图。 

xk-time 2.1.0 发布,Java 时间工具包,增加计算耗时工具类

xk-time 是时间转换,计算,格式化,解析,日历和cron表达式等的工具,使用Java8,线程安全,简单易用,多达70几种常用日期格式化模板,支持Java8时间类和Date,轻量级,无第三方依赖。

ps:大家可以点击感兴趣的标题直接阅读哦,点击阅读原文到社区浏览更多内容~

本文发布于:2024-02-03 08:57:55,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170692187349987.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:年轻   技术   社区   GC   PerfMa
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23