uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dennis Bauer (JIRA)" <...@uima.apache.org>
Subject [jira] [Created] (UIMA-5306) Memory Improvement - Unnecessary leaks
Date Thu, 09 Feb 2017 14:54:41 GMT
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)

Mime
View raw message