知识库

已停用:将垃圾回收方法更改为 G1

这已经是 Neo4j 2.3+ 的默认垃圾收集器。本指南仅针对早期版本。

何时使用 G1

默认情况下,Neo4j 2.2 及更早版本使用并发标记清除(CMS)进行垃圾收集。堆较大或在默认方法下出现不可接受的垃圾收集暂停的用户应尝试 G1(Garbage First)。

G1 在应用程序的吞吐量上做出一点让步,以确保 Full GC 暂停可预测且短暂。它在运行时对堆中的对象进行压缩,以避免与 CMS 相关的长时间 Full GC。

设置 G1 时,需要考虑目标 GC 暂停时长。我们建议初始保持默认值(200ms),但如果观察到大量 GC 超过一到两秒,可以适当调高。例如,可以先尝试 400ms,然后是 600ms,直至找到合适的平衡。目标暂停的设置是

wrapper.java.additional=-XX:MaxGCPauseMillis=200

如果想更改默认设置,请在 conf/neo4j-wrapper.conf 中添加此行。

切换到 G1

编辑 conf/neo4j-wrapper.conf 并进行修改

#********************************************************************
# JVM Parameters
#********************************************************************

#wrapper.java.additional=-XX:+UseConcMarkSweepGC
wrapper.java.additional=-XX:+UseG1GC
G1 只能与最新的 Java 7 或 Java 8 版本一起使用。
© . This site is unofficial and not affiliated with Neo4j, Inc.