diff --git a/src/main/java/com/hankcs/hanlp/collection/trie/DoubleArrayTrie.java b/src/main/java/com/hankcs/hanlp/collection/trie/DoubleArrayTrie.java index 1ffce490c..42bd11733 100644 --- a/src/main/java/com/hankcs/hanlp/collection/trie/DoubleArrayTrie.java +++ b/src/main/java/com/hankcs/hanlp/collection/trie/DoubleArrayTrie.java @@ -83,6 +83,16 @@ public String toString() */ private boolean enableFastBuild; + private double minResizeRatio = 1; + + /** + * 控制构建过程中每次扩容的最小比例,避免频繁扩容导致FGC + * @param minResizeRatio 扩容比例,取值范围建议(1, 2] + */ + public void setMinResizeRatio(double minResizeRatio) { + this.minResizeRatio = minResizeRatio; + } + /** * 拓展数组 * @@ -91,6 +101,8 @@ public String toString() */ private int resize(int newSize) { + newSize = Math.max(newSize, ((Double)(allocSize * minResizeRatio)).intValue()); + int[] base2 = new int[newSize]; int[] check2 = new int[newSize]; if (allocSize > 0)