CMS 被废弃了,该怎么办呢?

点击上方“朱小厮的博客”,选择“设为星标”

后台回复”1024“获取公众号专属1024GB资料

在 JDK 9 中 CMS GC 被废弃后,现有应用程序的最佳处理方法是什么?

流行的 CMS( Concurrent Mark Sweep) GC 算法在 JDK 9 中被废弃了。根据 JEP-291 中的说明,为了减轻 GC 代码的维护负担以及加速新功能开发,决定在 JDK9 中废弃CMS GC。

因此,从 Java 9 开始,如果您使用 -XX:+UseConcMarkSweepGC(激活 CMS GC 算法的参数)参数启动应用程序,则会在下面显示警告消息:

Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

为什么 CMS GC 会被废弃?

大家都知道轻装上阵,才能加速前行。CMS GC 也是如此。CMS 是一种高度可配置的复杂算法,因此给 JDK 中的 GC代码库带来了很多复杂性。只有 JDK 开发团队简化了 GC 代码库,他们才能在 GC 领域加速和创新。下表总结了可以传递给每个 GC 算法的 JVM 参数的数量:

JVM 大约有 50 个通用的适合所有所有 GC 算法的参数,除了这 50 个参数之外,仅对于 CMS,您还可以传递 72 个额外的参数。如上表所示,此参数比其他任何 GC 算法都要多得多。因此,可想而知,JDK 团队支持所有这些参数所需的编码复杂性。

如果使用了 CMS,后面该怎么办呢?

就目前来看,其实无非就三种选项:

  1. 切换到 G1 GC 算法

  2. 切换到 Z GC 算法(JDK 11、12 中的早期版本)

  3. 继续使用 CMS

接下来,我们来分析下每个选项。

(1)切换到 G1 GC 算法

自 Java 9 以来,G1 GC 已成为默认的 GC 算法。因此,可以考虑将应用程序的 GC 算法移至 G1。它可能会比 CMS GC 算法有更好的性能表现。调参相对较少,因此调整起来容易得多。此外,它还提供了用于从内存中消除重复的字符串的参数选项。如果可以消除重复的字符串,可以减少总体内存占用也是极好的。

(2)切换到 Z GC 算法

Z GC 是一种可扩展的低延迟垃圾回收器。其目标是使 GC 暂停时间小于 10ms。Java 11 和 12 中提供了对 Z GC 算法的早期版本。因此,如果你的应用程序在 Java 11 或 12 上运行,则可以考虑升级到 Z GC 算法。我们对 Z GC 的做了初步实验,都显示了极好的结果。

(3)继续使用CMS

我们发现,对于某些应用程序经过一些参数优化,CMS GC 可以提供 G1 GC 无法提供的出色结果。因此,如果您已经研究过上面两个选项,并且确信只有 CMS GC 算法就是适合你的应用程序,那么可以考虑继续使用 CMS 算法来运行。在 OpenJDK JDK9-dev 邮件列表中,甚至还有继续让 CMS 保持可用状态 的争论。根据我个人的经验,在 Java 1.1 中已废弃的功能和 API 在 Java 12 中仍然还是存在的(即使 20 年之后)。所有已弃用的 API 和功能似乎都可以保留(并且永远不会消失)。因此,继续在使用 CMS GC 也是一种选择。当然,这完全按照你的需要。

结论

请注意,每个应用程序都是唯一且不同的。因此,不要被在互联网上看到的有关 GC 调优(包括本文)的文章所迷惑。当你测试新的 GC 参数配置时,你需要进行彻底的测试,可以看看基准性能特征,然后再做决定。

英文原文地址:https://dzone.com/articles/cms-deprecated-next-steps

想知道更多?描下面的二维码关注我

【精彩推荐】

朕已阅 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1. 支持PHP8 2. 支持HTTPS环境 3. 支持MySQL8+ 4. 修改PHPCMS目录为CMS 5. 验证码修改 6. 支持H5上传,移除Flash上传 7. 修改后台缩略图裁切图片,移除Flash裁切改为H5裁切 8. 后台附件上传修改为H5上传,员头像上传修改为H5上传 9. 修改后台界面,修改后台登录界面、后台锁屏界面、后台内容界面 10. 修改前台界面 11. 修复已知BUG 12. 修复已知安全漏洞 13. 增加安装时自定义后台管理登录地址 14. 去掉PHPSSO模块、去掉Video及视频库相关、去掉Upgrade在线升级 15. 去除了已被废弃的视频模块和视频模型 16. 修复安装时DNS解析错误提示 17. 手机电脑同时生成Html 18. 安装文件不检查index.html 19. 安装完删除安装目录 20. 安装删除友情链接、广告数据 21. 添加开启附件分站状态 22. 整合UEditor编辑器 23. UEditor整合上传水印 24. UEditor上传储存数据 25. 附件选择框UI 26. 优化附件选择器界面 27. 添加讯飞关键词获取API、百度关键词获取API,原官方关键词接口已失效 28. 后台添加复制,可复制一条新的到任何栏目或站点 29. 添加头像字段 30. 修改头像,重新写入库 31. 添加组图模式,图片模式、文本模式 32. 百度编辑器上传视频播放器由embed改成video标签 33. 添加本地关键词获取API,原官方关键词接口已失效 34. 添加站点自定义字段、栏目自定义字段、单网页自定义字段 35. 添加一键导入微信文章字段 36. 添加Word导入编辑器字段 37. 增加编辑器可下载微信图片本地化功能 38. 编辑器远程下载图片时加入对尺寸的压缩处理 39. 后台登录密码传输改为加密模式 40. 添加生成静态页进度条 41. 编辑器添加本地图片自动上传 42. 升级为CK4.16.1编辑器 43. 无用文件清理 44. 修改生成缩略图函数thumb 45. 修改获取用户头像函数get_memberavatar 46. 修改原来上传类处理文件,删除原上传类处理文件,新增Upload上传类处理文件 47. 修改原来图片处理类文件 48. 修改IP库类处理文件 49. 新增二维码处理类文件 50. 新增Input类处理文件 51. 新增判断是否是移动端终端is_mobile函数 52. 新增二维码qrcode函数 53. 新增秒转化时间sec2time函数 54. 新增友好时间显示函数dr_fdate 55. 新增时间显示函数dr_date 56. 新增递归创建文件夹create_folder函数 57. 新增调用远程数据dr_catcher_data函数 58. 新增获取远程附件扩展名get_file_ext函数 59. 新增栏目面包屑导航dr_catpos函数 60. 新增手机栏目面包屑导航dr_mobile_catpos函数 61. 新增手机分页函数mobilepages 62. 新增重新日志记录函数log_message 63. 新增目录扫描dr_dir_map函数 64. 新增文件扫描dr_file_map函数 65. 新增数据返回统一格式dr_return_data函数 66. 新增格式化输出文件大小format_file_size函数 67. 新增附件信息get_attachment函数 68. 新增统一返回json格式并退出程序dr_json函数 69. 新增将数组转换为字符串dr_array2string函数 70. 新增将字符串转换为数组dr_string2array函数 71. 新增根据文件扩展名获取文件预览信息dr_file_preview_html函数 72. 新增IP转为实际地址ip2address函数 73. 新增当前IP实际地址ip_address_info函数 74. 新增清除HTML标记clearhtml函数 75. 新增提取关键字dr_get_keywords函数 76. 新增提取描述信息dr_get_description函数 77. 新增获取内容中的缩略图get_content_img函数 78. 新增HTML实体字符转换code2html函数 79. 新增判断存在于数组中dr_in_array函数 80. 新增字符长度dr_strlen函数 81. 新增将路径进行安全转换变量模式dr_safe_replace_path函数 82. 新增站点手机配置 83. 新增是否需要检查外部访问 84. 新增关联字段 85. 新增信息表格字段 86. 新增单文件上传字段 87. 水印图片的透明度设置 88. 增加内容编辑时的更新时间字段

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值