0 Replies Latest reply on Jan 25, 2011 3:57 AM by n2

    Spring integration, memory leaks

    n2

      I noticed a memory leak in jBPM Spring integration while profiling my application.

      I'm using jBPM 4.4 and Spring 2.5.6.

       

      jBPM calls org.jbpm.pvm.internal.env.SpringContext.get(Class<T> type) to retrieve Spring beans. This method calls org.springframework.context.ApplicationContext.getBeanNamesForType(type) everytime to get the bean anme for the class. These calls causes 30 MB memory usage after short runtime with only one user.

       

      Nebeans Profiler snapshot:

       

      Since getBeanNamesForType(type) reads names from the static Spring configuration SpringContext.get should cache the names after reading. I added a simple static Hashmap to SpringContext which saved 25 MB ram.

       

      I added a patch for maven module pvm of the jBPM-4.4 sources. A more sophisticated cache solution may be required in other environment with multiple Spring ApplicationContexts in one JVM.

       

      - Daniel