hotspot 垃圾收集器_HotSpot增量Java垃圾收集器

hotspot 垃圾收集器

在我最近的博客文章“ 确定活动的HotSpot垃圾收集器”中 ,我描述了可用于确定HotSpot JVM (Java进程)正在使用的垃圾收集器(当从命令行参数(标志)中变得不明显时)的不同方法。传递给Java启动器 。 对于重要的Java应用程序,我倾向于使用Java启动器显式指定适当的垃圾收集器标志,以免对使用哪个收集器产生任何疑问: -XX:+UseParallelGC ( 或 -XX:+UseParallelOldGC )用于并行/吞吐量收集器 , -XX:+UseConcMarkSweepGC用于并行标记扫描 (CMS)收集器, -XX:+UseG1GC用于垃圾优先垃圾收集器 , -XX:+UseSerialGC用于串行垃圾收集器 。

如果未明确指定所有垃圾收集器JVM标志,则虚拟机将选择垃圾收集器,并且可以使用JDK命令行工具jcmd或其相关的JMX MBean实现DiagnosticCommandMBean (通常通过JConsole)来标识VM选择了哪个垃圾收集器。 或VisualVM )。 在某些情况下,由于不存在我之前的列表中存在的特定HotSpot JVM标志,所以指定了特定的垃圾收集器。 在本文中,我将简要介绍以下内容之一: -Xincgc

Oracle为Java启动器java提供的JDK工具和实用程序文档简要描述了-Xincgc 。 Java SE 6的java可执行文件和Java SE 7的java可执行文件的-Xincgc描述了-Xincgc :“启用增量垃圾收集器。 增量垃圾收集器(默认情况下处于关闭状态)将减少程序执行期间偶尔出现的长时间垃圾收集暂停。 增量垃圾收集器有时会与程序并发执行,在此期间将减少程序可用的处理器容量。”

-Xincgcjava文档状态的Java SE 8版本:“启用增量垃圾收集。 JDK 8中不推荐使用此选项,而无需替换。” 从Java 8开始不推荐使用增量收集器,这在《 JDK 8兼容性指南 》的“ 不推荐使用的API ”部分中得到了确认:“ -Xincgc选项不推荐使用。” 有关为什么在JDK 8中不赞成使用此垃圾收集组合和其他垃圾收集组合的更多详细信息,请参见JEP 173 (“淘汰一些很少使用的GC组合”)和JEP 214 (“删除JDK 8中不推荐使用的GC组合”)。

看来-Xincgc在JDK 8之后将不可用。对于支持-Xincgc的JVM版本,一个问题可能是运行增量式垃圾收集器对于垃圾收集器而言意味着什么。 先前参考的《 JDK 8兼容性指南 》指出,“增量CMS”是现已弃用的“垃圾收集器组合”之一。 还已经指出 ,Java 6中的“ -Xincgc简单地转换”为“ -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode 。 接下来的两个屏幕快照展示了Java 8中小型,简单的Java应用程序的情况。 第一个快照描述了在指定和不指定-Xincgc情况下相同可执行JAR( -jar )的运行。 第二个快照描述了为同一应用程序选择的不同VM选择的命令行标志,这些标志是指定或不指定-Xincgc的结果。

20160507-正在运行JavaProcessesWithAndWithoutXincgc

20160507-垃圾收集器标志WithWithWithWithoutXincgc

这些屏幕快照表明, 指定-Xincgc时,用于此简单可执行JAR应用程序的Java 8 VM选择并行/吞吐量收集器( -XX:+UseParallelGC ),并选择带有附加标志的CMS收集器( -XX:+UseConcMarkSweepGC-XX:+CMSIncrementalMode-Xincgc明确规定。 还值得指出的是,当使用-Xincgc运行Java 8 HotSpot Java启动器时,会显示一条弃用警告消息(我已强调 ):“ Java HotSpot(TM)64位服务器VM警告:使用增量CMS是不推荐使用,可能会在将来的版本中删除。”

我认为值得在与垃圾回收相关的不赞成使用的JVM标志上发布,因为可以从此讨论中进行一些高级观察:

  • 除了直接指定特定垃圾收集器的HotSpot VM标志外,其他标志也可以暗示垃圾收集器。
  • jcmd工具不仅在不提供JVM标志的情况下,而且对于使用暗示特定收集器的标志(例如-Xincgc表示CMS收集器)的情况,都有助于识别使用哪个垃圾收集器。 。
  • 增量CMS收集器即将消失。 任何考虑升级到Java 9的人都可能会发现,应谨慎检查其应用程序使用的VM标志,以识别当前正在使用增量CMS收集器( -Xincgc )的情况。 如果在Java 8上运行,则应该已经有弃用警告,如本文所展示。
  • 这提醒我们,尽管Java和JVM在很大程度上仍是向后兼容的语言和平台,但某些功能和功能有时会被删除(通常很少使用或存在严重缺陷的功能)。

翻译自: https://www.javacodegeeks.com/2016/05/hotspot-incremental-java-garbage-collector.html

hotspot 垃圾收集器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python聚类分析成绩反思_机器学习python实践——二分K-means聚类

说这算法之前的话,前期的准备工作,请看我前面的博客。上一篇,我说到了K-means聚类算法,但是有很多的不足,有很多能够改进的地方,例如,怎样使得聚类效果达到全局最优(可能的最好结果)呢&#xff…

apache spark_如何将自定义数据源集成到Apache Spark中

apache spark如今,流数据是一个热门话题,而Apache Spark是出色的流框架。 在此博客文章中,我将向您展示如何将自定义数据源集成到Spark中。 Spark Streaming使我们能够从各种来源流式传输,同时使用相同的简洁API访问数据流&#…

python采用函数编程模式_浅谈Python 函数式编程

匿名函数lambda表达式什么是匿名函数?匿名函数,顾名思义就是没有名字的函数,在程序中不用使用 def 进行定义,可以直接使用 lambda 关键字编写简单的代码逻辑。lambda 本质上是一个函数对象,可以将其赋值给另一个变量&a…

【安卓开发 】Android初级开发(一)控件通用属性

控件通用属性 match_parent 是指和父容器宽高相等的值,其他的同理可证。 android:layout_marginTop"XXXXXXdp" 距离顶部的距离 Android TextView属性详解 该控件相关属性 Android EditText属性大全 相关属性查看地址 事件监听处理 package com.examp…

dynamodb java_使用Java将项目插入DynamoDB表

dynamodb java在上一篇文章中,我们学习了如何使用Java创建DynamoDB表。 下一步是将项目插入到先前创建的DynamoDB表中。 请记住,对于插入操作,最基本的步骤是指定主键。 对于表用户,主键是属性电子邮件。 您可以根据需要添加任意…

成都python数据分析师职业技能_数据分析师需要什么技能,数据分析行业都有什么职业?...

就目前而言,很多人看到了数据分析行业的光明前景,于是就想进入数据分析的行业中,但是,想成为一名合格的数据分析师,需要掌握很多的技能,那么一名合格的数据分析师需要掌握哪些技能呢?现在的数据…

【安卓开发 】Android初级开发(零)各种布局

线性布局的重要属性 (LinearLayout) 相关属性链接 layout_width 和 layout_height是布局器相对于外部构件的一个宽高距离。 layout_margin是指与外部控件的整个边缘距离。 padding是指与控件的内边距离 android:orientation 方向作用于整个布局中的所有控件 android:layo…

jboss fuse 教程_JBoss Fuse:使用JEXL的动态蓝图文件

jboss fuse 教程在本文中,我将展示如何在Apache Aries Blueprint xml文件中添加一些内联脚本。 我不一定会称其为最佳实践,但我一直有这样的想法:这种能力可能有用。 可能当我被迫使用xml来模拟命令式编程结构(例如使用Apache An…

认证令牌_Java应用程序的令牌认证

认证令牌建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现。 注册 ,再也不会建立auth了! 2016年5月12日更新&#xf…

java package报错_Java基础知识总结 - 超详细篇(上)

1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库JVM(java虚拟机)。3&#xff0c…

【安卓开发 】Android初级开发(二)Activity启动模式

Activity页面跳转在业务逻辑页面添加以下代码 //跳转到下一个activityIntent intent new Intent(this,MainActivity2.class);startActivity(intent); Activity四种启动模式 具体链接

weblogic 建立websocket连接报404_基于 Serverless 与 Websocket 的聊天工具实现

传统业务实现 Websocket 并不难,然而函数计算基本上都是事件驱动,不支持长链接操作。如果将函数计算与 API 网关结合,是否可以有 Websocket 的实现方案呢?API 网关触发器实现 WebsocketWebSocket 协议是基于 TCP 的一种新的网络协…

java的默认值规则_Java 8:默认方法解析规则

java的默认值规则随着Java 8中默认方法的引入,一个类现在可以从多个位置(例如另一个类或接口)继承相同的方法。 在这种情况下,可以使用以下规则来确定选择哪种方法: 类或超类方法声明始终优先于默认方法 否则&#x…

【Android OpenGL ES 开发 (五)】纹理相关(二)

纹理放大和缩小的过滤参数 1.使用线性插值效果最佳 2.通过修改 float maxscale 4.0f //放大 float minscale 0.5f //缩小 vertices[0].mPosition[0]0.5f * maxscale; //x vertices[0].mPosition[1]0.5f * maxscale; //y 实现模糊效果 1.利用显卡的并行计算的强大功能对…

python与sqlite3_sqlite3与python2.5,pysqlite和apsw有什么区别

我想知道python2.5,pysqlite和apsw的sqlite3之间的区别?当我尝试使用python2.5在windows vista上安装pysqlite时,我有一个颠簸的运行,请参阅以下内容:>从http://sqlite.org/download.html下载sqlite并将它们解压缩到windows / system32文件夹并将sqli…

monolith_将Java EE Monolith雕刻成微服务

monolith在介绍了为什么微服务应该由事件驱动的简介博客之后,我想采取一些其他步骤,并在有关博客的同时准备我即将进行的一系列演讲(在jBCNconf和Red Hat Summit上与您见面) 。旧金山 )。 在Twitter christianposta上关…

【H.264/AVC视频编解码技术】第四章【SPS序列参数集】

1.H264码流中重要的组成部分,保存针对整个视频序列的参数,丢失SPS的码流通常无法正常解码。 2.SPS信息的保存位置: 封装格式: FLV======会保存在 Tag中的Video Tag Data 部分,会有AVC VIDEO PACKET结构。SPS就包含在其中。 MP4===== H264裸码流: 保存…

spring内容协商管理_Spring框架中的内容协商

spring内容协商管理1.简介 使用BeanNameViewResolver完成的工作就是,我们刚刚在Spring上下文中创建了多个bean视图以生成预期的输出。 Spring很快引入了内容协商策略 ,该策略可以使用传统的RESTful ResponseBody方法和HTTP消息转换器,以JSON或…

二叉树专题

二叉树 (一)二叉树的三种遍历方式: 前序遍历 : 1 2 4 5 3 6 7 ; 中序遍历 : 4 2 5 1 6 3 7 ; 后序遍历 : 4 5 2 6 7 3 1 ; 本质是在递归序的基础上…

echart中拆线点的偏移_Real BIM | Rhino+Grasshopper在双曲异形玻璃幕墙中的应用

转载请联系并注明来源你好,我以自己所做的项目为例,介绍一下我的认知里,BIM技术对于真实项目的作用。案例是一个异形、双曲面的玻璃屋盖幕墙系统。如效果图所示,玻璃屋盖呈波浪状,塔楼装饰条与屋盖装饰条需要无缝连接。…