Yes, look create(Bean) in http://svn.apache.org/repos/asf/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java and http://svn.apache.org/repos/asf/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java destroyDependent
point is even string can be destroyed with some logic (think to producers @Disposes) Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> 2015-02-27 19:32 GMT+01:00 Lars-Fredrik Smedberg <[email protected]>: > @Romain that is okay i guess as long as the produced value is not request > (perhaps on a per user basis) dependent... in that case i would like to > create it in the scope of the method called on the applicationscoped bean... > > So I guess if I have this scenario I would need to either > > 1) do as u suggest by storing the value in the @postconstruct if it > possible (see above) > > 2) make the dependent object scoped > > 3) set another scope on the @ApplicationScoped or @Singleton > > Out of curiosity... when the value is for example a String or Locale which > is not subclassable...is owb holding on to the value somehow and prevent > them from being gc ed? > > ...or maybe i got it all wrong. ... > On Feb 27, 2015 7:26 PM, "Romain Manni-Bucau" <[email protected]> > wrote: > >> When I used this pattern I always did (for perf reason but side effect is >> behavior is what you want): >> >> @PostConstruct >> private void resolve() { >> value = instance......get(); >> } >> >> then in the code don't use instance at all but value. >> >> >> >> Romain Manni-Bucau >> @rmannibucau <https://twitter.com/rmannibucau> | Blog >> <http://rmannibucau.wordpress.com> | Github >> <https://github.com/rmannibucau> | LinkedIn >> <https://www.linkedin.com/in/rmannibucau> >> >> 2015-02-27 19:15 GMT+01:00 John D. Ament <[email protected]>: >> >>> Are you calling get() on the Instance with each request (or whatever0 >>> that comes into this bean? >>> >>> On Fri, Feb 27, 2015 at 1:13 PM Karl Kildén <[email protected]> >>> wrote: >>> >>>> To explain myself further ALL I had on my heap was my >>>> Instance<MyInterface>... and gc released 0.5% memory :) >>>> >>>> I had 200 000 of them at least. They where supposed to be four >>>> singletons. My idea was inject into @ApplicationScoped and omit to give >>>> them scope because they will be @ApplicationScoped anyways... Seems every >>>> invocation of my @ApplicationScoped bean recreated all instances. >>>> >>>> What I had was unrecoverable mem leak. Now I could be doing something >>>> stupid or Instance<MyInterface> has a problem or something else... >>>> >>>> Cheers >>>> >>>> >>>> >>>> On 27 February 2015 at 19:05, Romain Manni-Bucau <[email protected] >>>> > wrote: >>>> >>>>> If dependent it will be kept in enclosing bean. >>>>> Le 27 févr. 2015 19:00, "Lars-Fredrik Smedberg" <[email protected]> >>>>> a écrit : >>>>> >>>>> So does this mean that there will be a memory leak in the case Karl >>>>>> described? >>>>>> >>>>>> I have used similar constructs before so im curios (@Inject @Provider >>>>>> <some dep scoped bean> in an @ApplicationScoped bean and called get () on >>>>>> the injected provider). >>>>>> >>>>>> I thought for a while that it might get garbage collected when the >>>>>> created bean is outof scope or maybe then there is no way for @PreDestroy >>>>>> to be called? >>>>>> >>>>>> Regards >>>>>> LF >>>>>> >>>>>> I thought that the created dep scoped bean would be >>>>>> On Feb 27, 2015 6:07 PM, "Romain Manni-Bucau" <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Yes. >>>>>>> >>>>>>> Will be destoyed with the bean where it is injected IIRC so the app >>>>>>> here. >>>>>>> Le 27 févr. 2015 16:59, <[email protected]> a écrit : >>>>>>> >>>>>>>> Hello! I have a bean with @ApplicationScoped. When I inject >>>>>>>> Instance<MyInterface> instance and my actual beans implementing >>>>>>>> MyInstance >>>>>>>> are dependentscoped they get recreated over and over and are not gc'd. >>>>>>>> >>>>>>>> Expected behavior? >>>>>>>> >>>>>>>> Cheers >>>>>>> >>>>>>> >>>> >>
