本周精选分享了一次 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小时内删除。
留言与评论(共有 0 条评论) |