Uploaded image for project: 'ServiceMix'
  1. ServiceMix
  2. SM-1842

Memory leak when using the JMS binding component

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Won't Fix
    • 3.3
    • None
    • servicemix-jms
    • None
    • Windows XP Pro
      JDK 1.6.0_07

    Description

      I think there is a memory retention problem in the JMS binding component.

      Here is my test scenario.

      I have a JMS provider service unit and a JMS consumer service unit linked together.
      I have a simple Java program that continuously sends text messages to a JMS topic (managed by the servicemix embedded activemq server). My consumer listens on this topic and sends the received message to the JMS provider.
      I have another simple Java program that listens to another JMS topic (the one the provider is writing to).
      The consumer endpoint uses a in only MEP (in a first attempt, I used an in/out MEP, but I rapidly realized that messages were accumulating inside ther servicemix/activemq server).

      I use 2 message sizes.
      I'm using jconsole to monitor the memory consumption of servicemix (and the state of my topics through JMX beans).
      With short messages (20Kb xml text), I have a 200Mb memory retention after sending about 1 million messages.
      Same problem with 1Mb messages (approximatively same memory retention and number of messages).

      Using visualvm (to count instances), I found a map (JMSComponent.knownExchanges) that contains roughtly as many entries as the number of messages who did pass through servicemix. This map contains message IDs.

      I think the memory retention problem is proportional to the number of messages exchanged. With bigger messages, the time to reach 200Mb memory leak will be far longer than with 20Kb messages.

      Here are 2 archives :

      • my maven project for my SA and my 2 SUs,
      • Java source code for the JMS emitter and the JMS receiver. The main class is Main. The emitter receives "EMITTER" as argument, and the receiver receives "RECEIVER".

      Attachments

        1. jms2jms.zip
          5 kB
          Damien MORCELLET
        2. src.zip
          6 kB
          Damien MORCELLET

        Activity

          People

            ccustine Chris Custine
            dmorcellet Damien MORCELLET
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: