Details

    • Type: Bug Bug
    • Status: Open Open
    • Priority: Critical Critical
    • Resolution: Unresolved
    • Affects Version/s: 2.0.19
    • Fix Version/s: None
    • Component/s: None
    • Labels:
    • Environment:
      Ubuntu 11.04. Sun Java 6
    • Number of attachments :
      2

      Description

      I encounter a memory leak caused by Mvel in my application. My application have a User class. When a user is saved, the display name will be formatted using mvel, base on provided name format. When I run a import routine, it will have OOM error. And when I look into the heap using Eclipse Memory Analyzer, it is clearly caused by MVEL. You can see the details in attachment.

      After I remove the logic formatting name using MVEL, I do not have OOM any more.

      1. mvel_oom1.png
        176 kB
      2. mvel_oom2.png
        127 kB

        Activity

        Hide
        Wang Yizhuo added a comment -

        Sorry that I did not enter the complete title. The title should read "Memory leak with too many DynamicGetAccessor created". I could not find any place to modify the title.

        Show
        Wang Yizhuo added a comment - Sorry that I did not enter the complete title. The title should read "Memory leak with too many DynamicGetAccessor created". I could not find any place to modify the title.
        Hide
        Mike Brock added a comment -

        Try disabling the dynamic optimizer with: OptimizerFactory.setDefaultOptimizer(OptimizerFactory.SAFE_REFLECTIVE);

        Show
        Mike Brock added a comment - Try disabling the dynamic optimizer with: OptimizerFactory.setDefaultOptimizer(OptimizerFactory.SAFE_REFLECTIVE);
        Hide
        andre reiter added a comment -

        we had the same issue with the heap usage leading to OOM, after analyzing the heap dump, the resaon was clear: DynamicGetAccessor!
        after setting OptimizerFactory.setDefaultOptimizer(OptimizerFactory.SAFE_REFLECTIVE); everything is working fine, the heap usage is constant
        so what is the difference between "dynamic" and "reflective" optimizers?

        Show
        andre reiter added a comment - we had the same issue with the heap usage leading to OOM, after analyzing the heap dump, the resaon was clear: DynamicGetAccessor! after setting OptimizerFactory.setDefaultOptimizer(OptimizerFactory.SAFE_REFLECTIVE); everything is working fine, the heap usage is constant so what is the difference between "dynamic" and "reflective" optimizers?

          People

          • Assignee:
            Mike Brock
            Reporter:
            Wang Yizhuo
          • Votes:
            3 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated: