Uploaded image for project: 'UIMA'
  1. UIMA
  2. UIMA-3747

Memory management problem with compressed binary deserialization

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.4.2SDK
    • Fix Version/s: 2.6.0SDK
    • Component/s: Core Java Framework
    • Labels:
      None

      Description

      We think we stumbled across a memory management problem with the new compressed binary serialization when a CAS is reset/reused in a loop, e.g. in the uimaFIT SimplePipeline. When we use form 6, we consistently run into out-of-memory situations. Finally, we took the time to do a heap dump analysis.

      We found a huge TypeSystemImpl instance in the heap (~450MB). What makes it huge is the field "typeSystemMappers"
      that in our case contains 1000+ entries, each of them using apparently using a TypeSystemImpl as key.

      It looks like typeSystemMappers is never reset when a CAS is reused. My current theory is, that it should be reset when CAS.reset() is called, otherwise type systems accumulate there when the binary deserialization is used to repeatedly load data into a CAS in a loop that is resetting and reusing the CAS.

        Attachments

          Activity

            People

            • Assignee:
              schor Marshall Schor
              Reporter:
              rec Richard Eckart de Castilho
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: