当前位置: 首页 > 知识库问答 >
问题:

是否是CMS-concurrent-preclean中止导致了CMS-Concurrent-Sweep的耗时执行?

颜森
2023-03-14

java版本“1.6.0_21”java(TM)SE运行时环境(build 1.6.021-B07)java HotSpot(TM)64位服务器VM(build 17.0-B17,混合模式

jvm配置:

-server-xx:+DoesCapeAnalysis-xx:+CmSparalleLeserveEnabled-xx:+UseBiasedLocking-xx:+UseBiasedLocking-xx:+UseConcMarkSweepGC-xx:+UseParNewGC-xx:+CmsConcurrentMtenabled-xx:+UseParNewGC

-djavax.xml.parsers.documentbuilderfactory=org.apache.xerces.jaxp.documentbuilderfactoryimpl-verbose:gc-xx:+printgcdetails-xx:+printgctimestamps-xx:+heapdumponoutofmemoryerror-djava.net.preferipv4stack=true-dorg.apache.el.parser.coerce_to_zero=false

32163.991: [CMS-concurrent-mark-start]
32165.339: [CMS-concurrent-mark: 1.318/1.347 secs] [Times: user=6.49 sys=0.39, real=1.35 secs] 
32165.339: [CMS-concurrent-preclean-start]
32165.370: [CMS-concurrent-preclean: 0.030/0.031 secs] [Times: user=0.03 sys=0.00, real=0.03 secs] 
32165.370: [CMS-concurrent-abortable-preclean-start]  CMS: abort preclean due to time 32170.796: [CMS-concurrent-abortable-preclean:
3.737/5.426 secs] [Times: user=10.70 sys=0.31, real=5.43 secs] 
32170.873: [GC[YG occupancy: 754283 K (1887488 K)]32170.873: [Rescan (parallel) , 0.1046140 secs]32170.978: [weak refs processing,
0.0612460 secs] [1 CMS-remark: 5824525K(6291456K)] 6578809K(8178944K), 0.1700560 secs] [Times: user=1.51 sys=0.02, real=0.17 secs] 
32171.100: [CMS-concurrent-sweep-start]
32173.805: [GC 32173.805: [ParNew: 1887488K->209664K(1887488K), 0.3380510 secs] 6928845K->5305271K(8178944K), 0.3385670 secs] [Times: user=1.25 sys=0.05, real=0.34 secs] 
32176.970: [GC 32176.970: [ParNew: 1887488K->209664K(1887488K), 0.1728610 secs] 5660997K->4005785K(8178944K), 0.1734010 secs] [Times: user=1.09 sys=0.10, real=0.17 secs] 
32179.315: [CMS-concurrent-sweep: 6.088/8.215 secs] [Times: user=48.00 sys=2.80, real=8.22 secs] 
32179.315: [CMS-concurrent-reset-start]
32179.507: [CMS-concurrent-reset: 0.192/0.192 secs] [Times: user=1.51 sys=0.22, real=0.19 secs]

是否是CMS-concurrent-preclean中止导致了CMS-Concurrent-Sweep的耗时执行?是否会对用户造成48秒世界停止的影响?从上面的gc日志推断出来的是什么。

共有1个答案

广亮
2023-03-14

>

  • 所有表示为CMS-concurrent-*的阶段都是并发的,因此不是STW暂停。CMS Initial MarkCMS Final Remark是由并发循环引起的停顿。当然,young gen收集器有自己的STW暂停

    user=xxxtime命令的输出具有相同的语义。它是指进程调度的核心时间,它与经过的墙时间有很大的关系。real是您在对STW暂停的持续时间感兴趣时需要查找的内容。

    从上面的gc日志推断出来的是什么。

  •  类似资料:
    • 背景与目的 在开发后台接口时, 为了开发效率, 我们往往习惯编写串行执行的代码, 去调用不同的接口, 即使这些接口之间并无依赖, 这使得最后开发的接口性能低下, 且数据不方便复用 此框架目的旨在保持开发效率的同时, 很方便地支持并发和数据复用 原理 Spring + CountDownLatch + Future + 反射 + 动态代理 通过启动类的注解去加载需要代理的接口, 用 Factoryb

    • concurrent-tcp-client 可以在 TCP socket 创建大型并发请求,作为压力测试。

    • 极致CMS(简称:JIZHICMS)是一款免费开源的PHP建站CMS系统,在同意条款下可以免授权商业使用该系统。 前台功能模块 官网模块 留言模块 评论模块 购物模块 个人中心  收藏点赞 支付模块 前台发布 关注模块 积分钱包 部分截图 后台模块 内容管理 商品管理 留言管理 评论管理 订单管理 前台充值 自定配置 自定义模块 自定义字段 自定义桌面 权限控制 会员管理 会员权限 分角色权限 分

    • 问题内容: jmap进行内存转储时,我的Java应用程序是否继续运行? 问题答案: 您的应用程序已停止。获得准确的堆转储的唯一实用方法是在创建转储时停止所有应用程序活动。 这是“简短”暂停还是“长时间”暂停取决于要转储多少。如果使用“ -dump”,则将转储整个堆,包括不可达的对象。如果使用“ -dump:live”,则只会转储可访问的对象……但这(至少)需要标记堆以找出可访问的对象。 但是,如果

    • 本文向大家介绍谈谈java的concurrent用法,包括了谈谈java的concurrent用法的使用技巧和注意事项,需要的朋友参考一下 我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便。而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用jav

    • 在Clojure编程中,大多数数据类型都是不可变的,因此当涉及并发编程时,使用这些数据类型的代码在代码在多个处理器上运行时非常安全。 但很多时候,需要共享数据,当涉及跨多个处理器的共享数据时,有必要确保在使用多个处理器时保持数据的完整性状态。 这称为concurrent programming ,Clojure为此类编程提供支持。 通过dosync,ref,set,alter等公开的软件事务存储器