From afacf23a69dd1e16c0212be3898a82eabebe9b6f Mon Sep 17 00:00:00 2001 From: tang donghai Date: Tue, 16 May 2023 00:06:01 +0800 Subject: [PATCH] Update Javadoc for topoSortStates method after #12286 (#12292) --- .../java/org/apache/lucene/util/automaton/Operations.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java b/lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java index a25d992e351c..8dac4c654501 100644 --- a/lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java +++ b/lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java @@ -1317,6 +1317,14 @@ static Automaton totalize(Automaton a) { * non-recursive, so it will not exhaust the java stack for automaton matching long strings. If * there are dead states in the automaton, they will be removed from the returned array. * + *

Note: This method uses a deque to iterative the states, which could potentially consume a + * lot of heap space for some automatons. Specifically, automatons with a deep level of states + * (i.e., a large number of transitions from the initial state to the final state) may + * particularly contribute to high memory usage. The memory consumption of this method can be + * considered as O(N), where N is the depth of the automaton (the maximum number of transitions + * from the initial state to any state). However, as this method detects cycles, it will never + * attempt to use infinite RAM. + * * @param a the Automaton to be sorted * @return the topologically sorted array of state ids */