[weld-issues] [JBoss JIRA] Created: (WELD-920) Memory leak through the creational context of an @AppScoped bean when injecting Instance<>

Adam Warski (JIRA) jira-events at lists.jboss.org
Tue Jun 14 01:37:23 EDT 2011


Memory leak through the creational context of an @AppScoped bean when injecting Instance<>
------------------------------------------------------------------------------------------

                 Key: WELD-920
                 URL: https://issues.jboss.org/browse/WELD-920
             Project: Weld
          Issue Type: Bug
          Components: Scopes & Contexts
    Affects Versions: 1.1.1.Final, 1.1.0.CR3
            Reporter: Adam Warski


Given a simple dependent-scoped bean: public class InstanceBean {}, and an application-scoped bean (see below) to which an instance of the dependent-scoped bean is injected, each time the get() method is called on the instance, even though it's not used, a reference to it stays in the creational context of the application scoped bean (http://screencast.com/t/XqjQ1GB7Wv3). That way after several requests, where each one calls the method, more and more memory is leaked (http://screencast.com/t/s1VBx49i).

Attached is a simple web application demonstrating this. To reproduce, deploy to AS6, click the "leak" button several times, and analyze the heap dump e.g. in JProfiler.

@ApplicationScoped
@Named("test")
public class AppScopedBean {
    private Instance<InstanceBean> instanceBeanInstance;

    @Inject
    public AppScopedBean(Instance<InstanceBean> instanceBeanInstance) {
        this.instanceBeanInstance = instanceBeanInstance;
    }

    public AppScopedBean() {
    }

    public void leakOneInstance() {
        System.out.println("Leaked!");
        instanceBeanInstance.get();
    }
}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the weld-issues mailing list