问题标签 [concurrent-mark-sweep]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 可以增加引用旧对象的 gc 时间短寿命对象吗?
我需要澄清一下次要 gc 集合的行为方式。调用a()
或调用b()
一个长期存在的应用程序,如果它们在旧空间变大时表现得最差
我的疑惑从何而来?我发现在使用的永久空间变大的应用程序中,较小的 gc 暂停会增加。
进行了一些测试,我发现如果我强制 jvm 使用 optiona()
而另一个 jvm 使用 option b()
,那么b()
当旧空间变大时,带有 option 的 jvm 的暂停持续时间会更短,但我不知道为什么。
我在应用程序中解决了这个问题,在 4096 中使用了这个属性XX:ParGCCardsPerStrideChunk,但我想知道我上面描述的情况是否会导致 gctimes 增加导致 gccard 表中的扫描速度较慢或者我不知道或者是什么完全不相关。
java - 即使内存被回收,并发模式也会失败
这是我的应用程序的 VM OPS
5 天内发生 3 次并发模式异常。应用程序仍在运行文件,内存也可用。
应用程序在过去一周内没有 FullGC
为什么并发模式失败异常会在
- 没有频繁的 Full GC
GC 后正在回收内存
/li>
节点配置:8 核 CPU,12 GB RAM RHEL VM,JDK 1.7.0_45
java - 如何使用 CMS GC 在 Java 8 HotSpot 中造成非常高的堆碎片
我正在研究 Java8 HotSpot 堆碎片(在 CMS 上),并且我正在努力编写一些产生高碎片的代码。我一直在尝试非常大的物体但没有成功。
有人可以发布一个创建非常高的堆碎片(达到提升失败)的代码,所以我可以研究它吗?
谢谢
java - Java - CMS 与 G1 垃圾收集器
cms 和 g1 垃圾收集器之间有什么区别使 g1 更好?
大多数地方都说这是因为在 G1 中,堆被划分为区域,然后将区域集合标记为年轻/老年代,并且 gc 在少数区域而不是整个堆上运行。我试图进一步理解这一点,并有几个问题:
当年轻 gc 运行(即停止世界)时,它会在所有年轻代区域上运行,这意味着堆的整个年轻部分和年轻代的不少区域。那么它在时间上与 CMS 相同吗?
增量压缩 - 混合收集 - 现在这是我认为 G1 具有优势的地方,因为整个堆的并发标记不断发生,并且在所有年轻区域 + 少数旧区域(首先是大多数垃圾)上运行的混合 gc 周期。所以它会继续从老年代清除垃圾,而不是等待 Full gc 发生。这是正确的吗 ?
上述几点是否正确?还有哪些其他区别使 g1 更好?
java - CMS-并发扫描需要很长时间
我有一台在 KVM 上运行的 windows 机器,我正在 windows 机器上运行一个 java 应用程序(使用 CMS GC)。该应用程序的行为非常缓慢,因此我检查了 GC 日志。最大堆大小为 5 GB,但在 gc 日志中,我发现即使在堆达到最大 5GB 之前,次要 gcs 也需要 5 秒。
CMS-concurrent-sweep 花费了太多时间。在另一台 Windows 机器上进行检查后,我发现 CMS-concurrent-mark 和 CMS-concurrent-sweep 占用了将近 30%。增加的 CMS-concurrent-sweep 值说明了什么?这是否意味着解除分配花费了太多时间?这可能是由于内存速度慢或可能是交换造成的吗?
algorithm - 为什么标记和清除收集器必须停止世界而不是并行运行?
我正在阅读“垃圾收集手册:第 2 版”。在“Mark-Sweep 垃圾收集”页面中,提到了所有 mutator 线程在收集器线程运行时停止。
是什么原因?在标记阶段,收集器只接触它拥有的字节(标记标志),而突变器甚至不应该使用。在扫描阶段,它只释放最初甚至无法被 mutator 触及的对象,因为它们无法访问(未标记)。
我一定遗漏了一些东西,但是如果它可以完全并行运行(如上所述),为什么要停止所有的 mutator 线程?