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

-XX: UseG1GC是-Xincgc的正确替代品吗?

骆文华
2023-03-14

目前,我们通过向java命令添加-Xincgc来使用增量垃圾收集器。在JDK 8中,不推荐使用此开关。那么,它的替代品是什么呢<代码>-XX:UseG1GC?

背景:该应用程序有8GB的堆,并创建了许多短生命对象。我注意到它经常暂停几秒钟来收集垃圾。出于好奇,我添加了-Xincgc,发现暂停消失了,整体性能提高了约4倍。

不幸的是,我没有找到任何关于-Xincgc触发器的垃圾收集器类型的信息。有CMS(并发标记和扫描)和新的G1(垃圾优先)。但是我从-Xincgc中得到了什么?

共有2个答案

商和颂
2023-03-14

直到Oracle在较新版本中完全不推荐此选项。我们仍然可以通过应用以下jvm参数来使用它:

-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

后两个参数用于登录GC活动。

茅高卓
2023-03-14

对于Oracle/OpenJDK 8,大多数机器上的默认收集器是并行吞吐量收集器,但一些32位windows机器除外,它们可以是串行GC。

Xincgc是增量模式下的CMS。您看到的主要好处可能是从吞吐量收集器切换到CMS,而不是为单核CPU设计的增量模式。

增量模式也不受欢迎,所以只需通过-XX:useConCMMarkSweepGC启用CMS,看看是否适合您。更新:CMS也被弃用,然后在以后的OpenJDK版本中被删除

当然,您也可以尝试G1GC,它也是为达到低暂停时间目标而设计的,它的优点是不会像CMS那样出现碎片,因此不太可能出现导致单线程停止world collection的并发模式故障。更新:较新的OpenJDK版本提供了额外的低暂停时间采集器(G1GC除外),所以,尝试这两种方法并进行测量。

请参阅:Oracle的Java8 GC调谐指南

 类似资料:
  • 问题内容: 我正在使用本教程中描述的身份验证/授权机制来构建Rest服务:http : //howtodoinjava.com/2013/06/26/jax-rs-resteasy-basic-authentication-and- authorization-tutorial/ 基本上,它使用PreProcessInterceptor接口扫描目标方法中的注释(来自javax.annotation

  • 问题内容: py2exe是否有替代品? 问题答案: cx_Freeze是跨平台的,并且具有相同的功能,或者您可以使用py2app,它仅在Mac上有效。

  • 问题内容: 问题 在解决这个问题之后,似乎基于文件或磁盘的实现可能是解决我在此处提到的问题的正确解决方案。精简版: 目前,我已将实施为。 条目以相当固定的速率连续添加到其中。稍后对此进行详细说明。 最终,无论如何,这意味着JVM耗尽了堆空间。 在工作中,(强烈)建议我使用SQLite解决此问题,但是在问了上一个问题之后,我认为数据库不是适合此工作的合适工具。所以- 让我知道这听起来是否疯狂 -我认

  • 问题内容: 在教程中,我学会了使用。现在,我了解到,很多人对此表示反对。我已经尝试过,但随后它实际上将其发送到打印机。 那么我应该使用哪些替代方法,为什么不使用呢?w3schools和MDN都使用。 问题答案: 作为推荐的替代方法,您可以使用DOM操作直接查询节点元素并将其添加到DOM。

  • 问题内容: 如何将低延迟数据发送到服务器并通过phonegap返回? 考虑到我没有本地访问php文件的经验,也没有使用node.js或WebSockets的经验,因此我不知道应该使用哪个文件。 问题答案: Android或iOS下的Cordova的较旧版本的浏览器本身不支持WebSocket ,这意味着如果要在客户端上使用它们,则需要使用PhoneGap插件。 有关更多信息,请访问:http :

  • 问题内容: 一个(很久以前),我写了一个网络蜘蛛,我对该线程进行了多线程处理,以使并发请求能够同时发生。那是我的Python青年时代,在我了解GIL及其为多线程代码造成的相关麻烦之前(IE,大多数时候,这些东西最终都被序列化了!)… 我想对这段代码进行重做,以使其更健壮并性能更好。基本上有两种方法可以执行此操作:我可以使用2.6+中的新多处理模块,也可以使用某种基于反应堆/事件的模型。我宁愿以后再