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

        
_______________________________________________
weld-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/weld-issues

Reply via email to