Skip to content

Commit 2397426

Browse files
authored
Merge pull request #33 from GateNLP/gc
Remove excessive use of GC via system property
2 parents 58f5ad6 + 131390e commit 2397426

File tree

2 files changed

+80
-50
lines changed

2 files changed

+80
-50
lines changed

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

Lines changed: 61 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
@@ -187,17 +186,24 @@ public synchronized void incrementGazStore() throws ResourceInstantiationExcepti
187186
// System.err.println("DEBUG running incrementGazStore");
188187
String uniqueGazStoreKey = genUniqueGazStoreKey();
189188
logger.info("Creating gazetteer for " + getConfigFileURL());
190-
System.gc();
191-
long startTime = System.currentTimeMillis();
192-
long before = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
189+
190+
boolean profile = (System.getProperty("com.jpetrak.gate.stringannotation.profile") != null);
191+
192+
long startTime = 0, before = 0;
193+
194+
if (profile) {
195+
System.gc();
196+
startTime = System.currentTimeMillis();
197+
before = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
198+
}
199+
193200
GazStore gs = loadedGazStores.get(uniqueGazStoreKey);
194201
if (gs != null) {
195202
// The FSM for this file/parm combination already has been compiled, just
196203
// reuse it for this PR
197204
gazStore = gs;
198205
gazStore.refcount++;
199206
logger.info("Reusing already generated GazStore for " + uniqueGazStoreKey);
200-
System.err.println("Reusing already generated gaz store for " + uniqueGazStoreKey);
201207
} else {
202208
try {
203209
loadData();
@@ -211,21 +217,32 @@ public synchronized void incrementGazStore() throws ResourceInstantiationExcepti
211217
// System.err.println("DEBUG addeed new gaz store with key " + uniqueGazStoreKey);
212218
logger.info("New GazStore loaded for " + uniqueGazStoreKey);
213219
}
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());
220+
221+
if (profile) {
222+
long endTime = System.currentTimeMillis();
223+
System.gc();
224+
long after = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
225+
logger.info("Gazetteer created in (secs): " + ((endTime - startTime) / 1000.0));
226+
logger.info("Heap memory increase (estimate,MB): "
227+
+ String.format("%01.3f", ((after - before) / (1024.0 * 1024.0))));
228+
logger.info(gazStore.statsString());
229+
}
221230
}
222231

223232
public synchronized void replaceGazStore() throws ResourceInstantiationException {
224233
String uniqueGazStoreKey = genUniqueGazStoreKey();
225234
logger.info("Replacing gazetteer for " + getConfigFileURL());
226-
System.gc();
227-
long startTime = System.currentTimeMillis();
228-
long before = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
235+
236+
long startTime = 0, before = 0;
237+
238+
boolean profile = (System.getProperty("com.jpetrak.gate.stringannotation.profile") != null);
239+
240+
if (profile) {
241+
System.gc();
242+
startTime = System.currentTimeMillis();
243+
before = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
244+
}
245+
229246
try {
230247
loadData();
231248
gazStore.compact();
@@ -235,13 +252,15 @@ public synchronized void replaceGazStore() throws ResourceInstantiationException
235252
loadedGazStores.put(uniqueGazStoreKey, gazStore);
236253
logger.info("GazStore replaced for " + uniqueGazStoreKey);
237254

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());
255+
if (profile) {
256+
long endTime = System.currentTimeMillis();
257+
System.gc();
258+
long after = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
259+
logger.info("Gazetteer created in (secs): " + ((endTime - startTime) / 1000.0));
260+
logger.info("Heap memory increase (estimate,MB): "
261+
+ String.format("%01.3f", ((after - before) / (1024.0 * 1024.0))));
262+
logger.info(gazStore.statsString());
263+
}
245264
}
246265

247266
public synchronized void decrementGazStore() {

src/main/java/com/jpetrak/gate/stringannotation/extendedgazetteer/trie/StoreStates.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,16 +91,27 @@ public void compact() {
9191
if(logger==null) {
9292
logger = Logger.getLogger(this.getClass().getName());
9393
}
94+
95+
boolean profile = (System.getProperty("com.jpetrak.gate.stringannotation.profile") != null);
96+
9497
logger.info("Compacting states");
95-
System.gc();
96-
long startTime = System.currentTimeMillis();
97-
long before = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
98+
long startTime = 0, before = 0;
99+
100+
if (profile) {
101+
System.gc();
102+
startTime = System.currentTimeMillis();
103+
before = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
104+
}
105+
98106
charMapStore = new StoreCharMapPhase2(charMapStore);
99-
long endTime = System.currentTimeMillis();
100-
long after = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
101-
logger.info("Compacting finished in (secs): "+((endTime-startTime)/1000.0));
102-
logger.info("Heap memory increase (estimate,MB): "+
103-
String.format("%01.3f", ((after-before)/(1024.0*1024.0))));
107+
108+
if (profile) {
109+
long endTime = System.currentTimeMillis();
110+
long after = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
111+
logger.info("Compacting finished in (secs): "+((endTime-startTime)/1000.0));
112+
logger.info("Heap memory increase (estimate,MB): "+
113+
String.format("%01.3f", ((after-before)/(1024.0*1024.0))));
114+
}
104115
}
105116
}
106117

0 commit comments

Comments
 (0)