Skip to content

Commit bd5999a

Browse files
committed
a new profile option (defaults to false) to avoud explicit calls to GC in nomal usage
1 parent 58f5ad6 commit bd5999a

1 file changed

Lines changed: 71 additions & 42 deletions

File tree

src/main/java/com/jpetrak/gate/stringannotation/extendedgazetteer/GazetteerBase.java

Lines changed: 71 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -20,49 +20,48 @@
2020
*/
2121
package com.jpetrak.gate.stringannotation.extendedgazetteer;
2222

23-
import gate.Factory;
24-
import gate.FeatureMap;
25-
import gate.Resource;
26-
import gate.creole.ANNIEConstants;
27-
import gate.creole.AbstractLanguageAnalyser;
28-
import gate.creole.ResourceInstantiationException;
29-
import gate.creole.metadata.CreoleParameter;
30-
import gate.util.BomStrippingInputStreamReader;
31-
import gate.util.GateRuntimeException;
32-
import gate.util.Strings;
33-
23+
import java.awt.event.ActionEvent;
3424
import java.io.BufferedReader;
3525
import java.io.File;
3626
import java.io.IOException;
27+
import java.io.InputStreamReader;
3728
import java.io.UnsupportedEncodingException;
3829
import java.lang.management.ManagementFactory;
3930
import java.net.MalformedURLException;
4031
import java.net.URL;
32+
import java.util.ArrayList;
4133
import java.util.HashMap;
4234
import java.util.Iterator;
4335
import java.util.List;
44-
import java.util.ArrayList;
4536
import java.util.Locale;
4637
import java.util.Map;
4738
import java.util.regex.Pattern;
39+
import java.util.zip.GZIPInputStream;
40+
41+
import javax.swing.AbstractAction;
42+
import javax.swing.Action;
4843

4944
import org.apache.log4j.Logger;
45+
import org.yaml.snakeyaml.Yaml;
5046

5147
import com.jpetrak.gate.stringannotation.extendedgazetteer.trie.GazStoreTrie3;
5248
import com.jpetrak.gate.stringannotation.utils.UrlUtils;
49+
50+
import gate.Factory;
51+
import gate.FeatureMap;
5352
import gate.GateConstants;
53+
import gate.Resource;
54+
import gate.creole.ANNIEConstants;
55+
import gate.creole.AbstractLanguageAnalyser;
56+
import gate.creole.ResourceInstantiationException;
57+
import gate.creole.ResourceReference;
58+
import gate.creole.metadata.CreoleParameter;
5459
import gate.creole.metadata.Optional;
5560
import gate.gui.ActionsPublisher;
61+
import gate.util.BomStrippingInputStreamReader;
5662
import gate.util.Files;
57-
import gate.creole.ResourceReference;
58-
import java.awt.event.ActionEvent;
59-
import java.io.InputStreamReader;
60-
import java.util.zip.GZIPInputStream;
61-
import javax.swing.AbstractAction;
62-
import javax.swing.Action;
63-
import static javax.swing.Action.SHORT_DESCRIPTION;
64-
65-
import org.yaml.snakeyaml.Yaml;
63+
import gate.util.GateRuntimeException;
64+
import gate.util.Strings;
6665

6766
/**
6867
* Common Base class for all gazetteer implementations. All these PRs need to
@@ -124,6 +123,20 @@ public void setGazetteerFeatureSeparator(String sep) {
124123
}
125124
}
126125

126+
protected Boolean profile;
127+
128+
@CreoleParameter(
129+
comment = "If enabled the PR will display information on memory usage etc.",
130+
defaultValue = "false"
131+
)
132+
public void setProfile(Boolean profile) {
133+
this.profile = profile;
134+
}
135+
136+
public Boolean getProfile() {
137+
return profile;
138+
}
139+
127140
public String getGazetteerFeatureSeparator() {
128141
return gazetteerFeatureSeparator;
129142
}
@@ -187,17 +200,22 @@ public synchronized void incrementGazStore() throws ResourceInstantiationExcepti
187200
// System.err.println("DEBUG running incrementGazStore");
188201
String uniqueGazStoreKey = genUniqueGazStoreKey();
189202
logger.info("Creating gazetteer for " + getConfigFileURL());
190-
System.gc();
191-
long startTime = System.currentTimeMillis();
192-
long before = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
203+
204+
long startTime = 0, before = 0;
205+
206+
if (profile) {
207+
System.gc();
208+
startTime = System.currentTimeMillis();
209+
before = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
210+
}
211+
193212
GazStore gs = loadedGazStores.get(uniqueGazStoreKey);
194213
if (gs != null) {
195214
// The FSM for this file/parm combination already has been compiled, just
196215
// reuse it for this PR
197216
gazStore = gs;
198217
gazStore.refcount++;
199218
logger.info("Reusing already generated GazStore for " + uniqueGazStoreKey);
200-
System.err.println("Reusing already generated gaz store for " + uniqueGazStoreKey);
201219
} else {
202220
try {
203221
loadData();
@@ -211,21 +229,30 @@ public synchronized void incrementGazStore() throws ResourceInstantiationExcepti
211229
// System.err.println("DEBUG addeed new gaz store with key " + uniqueGazStoreKey);
212230
logger.info("New GazStore loaded for " + uniqueGazStoreKey);
213231
}
214-
long endTime = System.currentTimeMillis();
215-
System.gc();
216-
long after = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
217-
logger.info("Gazetteer created in (secs): " + ((endTime - startTime) / 1000.0));
218-
logger.info("Heap memory increase (estimate,MB): "
219-
+ String.format("%01.3f", ((after - before) / (1024.0 * 1024.0))));
220-
logger.info(gazStore.statsString());
232+
233+
if (profile) {
234+
long endTime = System.currentTimeMillis();
235+
System.gc();
236+
long after = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
237+
logger.info("Gazetteer created in (secs): " + ((endTime - startTime) / 1000.0));
238+
logger.info("Heap memory increase (estimate,MB): "
239+
+ String.format("%01.3f", ((after - before) / (1024.0 * 1024.0))));
240+
logger.info(gazStore.statsString());
241+
}
221242
}
222243

223244
public synchronized void replaceGazStore() throws ResourceInstantiationException {
224245
String uniqueGazStoreKey = genUniqueGazStoreKey();
225246
logger.info("Replacing gazetteer for " + getConfigFileURL());
226-
System.gc();
227-
long startTime = System.currentTimeMillis();
228-
long before = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
247+
248+
long startTime = 0, before = 0;
249+
250+
if (profile) {
251+
System.gc();
252+
startTime = System.currentTimeMillis();
253+
before = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
254+
}
255+
229256
try {
230257
loadData();
231258
gazStore.compact();
@@ -235,13 +262,15 @@ public synchronized void replaceGazStore() throws ResourceInstantiationException
235262
loadedGazStores.put(uniqueGazStoreKey, gazStore);
236263
logger.info("GazStore replaced for " + uniqueGazStoreKey);
237264

238-
long endTime = System.currentTimeMillis();
239-
System.gc();
240-
long after = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
241-
logger.info("Gazetteer created in (secs): " + ((endTime - startTime) / 1000.0));
242-
logger.info("Heap memory increase (estimate,MB): "
243-
+ String.format("%01.3f", ((after - before) / (1024.0 * 1024.0))));
244-
logger.info(gazStore.statsString());
265+
if (profile) {
266+
long endTime = System.currentTimeMillis();
267+
System.gc();
268+
long after = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
269+
logger.info("Gazetteer created in (secs): " + ((endTime - startTime) / 1000.0));
270+
logger.info("Heap memory increase (estimate,MB): "
271+
+ String.format("%01.3f", ((after - before) / (1024.0 * 1024.0))));
272+
logger.info(gazStore.statsString());
273+
}
245274
}
246275

247276
public synchronized void decrementGazStore() {

0 commit comments

Comments
 (0)