I have identified a repeatable memory leak in the Essential Import Utility when executing an Excel import against a server-based Protégé repository.
Environment:
- Essential Import Utility: 2.10.1
- Tomcat 9.0.x
- OpenJDK 8
- Maximum heap: 4 GB
- Remote/server-based Protégé repository
- Open run_excel_import.zul.
- Select an import activity.
- Under “Execute Import”, select a server-based production environment.
- Click “Execute Import”.
- Click “Run Import” and wait for successful completion.
Run a full GC and compare Java heap histograms.
Observed behaviour:
Each execution retains approximately 200–400 MB. The memory remains reachable after the import succeeds and is not recovered by a full GC. Eventually, repeated imports can exhaust the configured heap.
In my test, live heap increased from approximately 1.15 GB after the first run to 1.92 GB after the third run—an increase of about 787 MB.
The growing classes are almost entirely Protégé repository structures:
RemoteClientProject: 4 -> 7
DefaultKnowledgeBase: 8 -> 14
RemoteClientFrameStore: 4 -> 7
Protege Session: 4 -> 7
framestore.Record: 2,570,560 -> 4,498,480
The largest memory increases were in HashMap$Node, HashMap backing arrays, Protégé Record, FrameID, DefaultSimpleInstance, and related knowledge-base collections.
Jython objects remained stable, and the Apache POI workbook was not the principal retained object.
