Java G1GC GC日志是什么意思?
我不理解G1GC日志的确切含义(添加PrintGCDetails和PrintGCTimestamp时)。有人能解释一下语法吗 [ 完整GC意味着什么?它是一个暂停吗?它是并行的吗?使用了哪种GC算法?G1为什么决定使用它Java G1GC GC日志是什么意思?,java,logging,garbage-collection,heap-memory,g1gc,Java,Logging,Garbage Collection,Heap Memory,G1gc,我不理解G1GC日志的确切含义(添加PrintGCDetails和PrintGCTimestamp时)。有人能解释一下语法吗 [ 完整GC意味着什么?它是一个暂停吗?它是并行的吗?使用了哪种GC算法?G1为什么决定使用它 5.941: [Full GC 7891K->4756K(6000M), 0.1939233 secs] 以下是我在G1 GC上可以在线找到的(相当有限)材料的字里行间阅读。(付费墙后面有一篇2004年的论文,JavaWorld 2008的幻灯片,还有。如果有人有其他链
5.941: [Full GC 7891K->4756K(6000M), 0.1939233 secs]
以下是我在G1 GC上可以在线找到的(相当有限)材料的字里行间阅读。(付费墙后面有一篇2004年的论文,JavaWorld 2008的幻灯片,还有。如果有人有其他链接,请添加。) 完整GC意味着什么 与其他热点GC一样,堆被划分为新的或伊甸园空间、幸存者空间和旧的或长期存在的对象空间。但是,与其他热点GC不同,G1使用多个区域来容纳空间 通常情况下,G1收集器与应用程序线程以增量方式并行运行,跟踪并将对象“排空”到其他区域。但是,收集器有时可能远远落后,以至于它必须停止所有操作,并使用所有可用的处理器来收集所有堆区域。我认为这是一个完整的GC 这是一个停顿吗?它是平行的吗 我认为这是平行的,但也阻止了世界 使用哪种GC算法 现在还不清楚 为什么G1决定使用它
5.941: [Full GC 7891K->4756K(6000M), 0.1939233 secs]
如上所述。它落后太远,堆中充满了垃圾。关于“这是暂停吗?它是并行的吗?”
用爪哇语来说,
GC有两种类型(基于与mutator的并发,即应用程序)-(1)停止世界(2)并发
停止世界GC进一步细分为-1a)如果GC线程数为1,则停止世界1b)如果GC线程数超过oracle和
完整GC意味着什么
对于G1GC,任何超过区域大小一半的对象都被视为“大型对象”。此类对象在旧一代中直接分配到“大型区域”。这些大型区域是一组连续的区域。
在清理阶段的标记周期结束时,以及在整个垃圾收集周期中,会释放死的大量对象
为了减少复制开销,任何疏散暂停都不包括庞大的对象。一个完整的垃圾收集周期会将庞大的对象压缩到位。
通常,Full GCis会清理整个堆–年轻空间和终身空间(老世代)
另一方面,您必须担心“应用程序线程停止”的时间,而不管GC类型:年轻GC或完整GC等
这是一个停顿吗?它是平行的吗
YounGC是并行的,但不是FullGC
完整gc:目前G1完整gc是单线程的,速度非常慢,
我们应该尽量避免使用完整gc(摘自文章)
使用哪种GC算法
你是说Young GC/Major GC/Full GC吗?从你的日志来看,最后一行是Full GC,第一行是YounGC
为什么G1决定使用它
5.941: [Full GC 7891K->4756K(6000M), 0.1939233 secs]
在回答第一个问题时解释
关于G1GC微调,请查看oracle和相关的对不起?如果您有更多相关链接,请添加它们。谢谢Stephan。我对这些链接很熟悉。问题是web上公开的信息似乎不够……这是否意味着还没有人使用或真正评估它?我无法判断。我确定有些人会使用它,但有多少是不可能确定的。有6页的谷歌点击“g1gc调优”,但我不希望他们中的任何人提供明确的信息…除非他们来自Oracle。