uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Klügl (JIRA) <...@uima.apache.org>
Subject [jira] [Commented] (UIMA-5306) Memory Improvement - Unnecessary leaks
Date Fri, 10 Feb 2017 09:38:41 GMT

    [ https://issues.apache.org/jira/browse/UIMA-5306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15860988#comment-15860988
] 

Peter Klügl commented on UIMA-5306:
-----------------------------------

I think there should be no duplicate types, as the descriptions of the types are merged before
creating the CAS. If this is not true, then there is real big problem, which I actually should
have oberserved before.

> 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
>            Assignee: Peter Klügl
>
> 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