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
>>>>>
>>>>>
>>

Reply via email to