Dennis Bauer created UIMA-5306:
----------------------------------
Summary: Memory Improvement - Unnecessary leaks
Key: UIMA-5306
URL: https://issues.apache.org/jira/browse/UIMA-5306
Project: UIMA
Issue Type: Improvement
Components: Ruta
Affects Versions: 2.3
Environment: Windows 10, JVM with -Xmx 1024, Java JDK 1.8., 16gb memory
Reporter: Dennis Bauer
In a productive setup we figured out, that there is a huge memory usage of Ruta
itself. With JVisualVM it's easy to see, that there is a relative small amount
of arrays of Arraylists but with a high memory consumption (250k instances
result in 243 000 000 byte memory that are reserved)
The problem is, that in a clustered SaaS environment with less memory, these
arrays block relevant space in memory. A deeper look into these Arrays of
Arraylist let suggest the class org.apache.uima.ruta.type.RutaBasic
A look at this class show three arrays that are instanced with the max.
possible value, that can be returned by the typesystem of CAS.
{code:Java}
private int[] partOf = new int[((TypeSystemImpl)
getCAS().getTypeSystem()).getLargestTypeCode()];
private Collection<?>[] beginMap = new ArrayList<?>[((TypeSystemImpl)
getCAS().getTypeSystem())
.getLargestTypeCode()];
private Collection<?>[] endMap = new ArrayList<?>[((TypeSystemImpl)
getCAS().getTypeSystem())
.getLargestTypeCode()];
{code}
In this improvement should be done an dynamic allocation of memory usage for
these arrays, so the total memory consumption would be reduced.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)