OutOfMemory in HttpClient

jaimemm jaimemm at gmail.com
Tue Jan 20 04:50:15 EST 2009


Hi Trustin,

I was just working on that. If I share the factory the threads number keeps
stable, so the memory.

But still, just in case I'd like to create a new factory per request, should
be possible to release the resources (free the threads) from the
ResponseHandler. Am I wrong?


With regards,
----------------------------------------



Trustin Lee-3 wrote:
> 
> Hi jaimemm,
> 
> Thanks for the detailed report first of all.  It's weird that
> something is creating a lot of threads.  Could you let me know what
> exactly you have changed the example so that I can try it by myself?
> Also, it would be great if you can attach a full thread dump just in
> case the names of the threads are helpful to track down the problem.
> 
> At last but not least, you don't need to create a ChannelFactory for
> each connection.  You need to share it for all connections.
> 
> Thanks for your patience,
> 
> — Trustin Lee, http://gleamynode.net/
> 
> 
> 
> On Mon, Jan 19, 2009 at 9:20 PM, jaimemm <jaimemm at gmail.com> wrote:
>>
>> Mmmmm it's not a memory leak...it's because I'm running out of OS memory
>> to
>> create Threads!!
>> Please have a look to the attached screenshot from the jconsole.
>>
>> Why does it keep creating threads instead of reusing them? Is there any
>> way
>> to limit the number of threads?
>>
>>
>> http://n2.nabble.com/file/n2181002/values.jpg values.jpg
>> -----------------------------------
>>
>>
>>
>> Wesly smith wrote:
>>>
>>> Gee... you asked a very similar question like mine.
>>>
>>> In my case, I set the NIO selector loop number too high, such as 160
>>> below, and I sent in 1M content size message from client, and it caused
>>> out-of-message on my setup.
>>>   ChannelFactory factory =
>>>     new NioClientSocketChannelFactory(
>>>         Executors.newCachedThreadPool(),
>>>         Executors.newCachedThreadPool(), 160);
>>>
>>> But after I switch the default numbers (usually, the jvm pick up the
>>> core
>>> numbers if you don't specify it), and I didn't see the out-of-memory
>>> problem after I punched 100000 messages with each client message having
>>> ChannelBuffer 1024x1024 bytes.
>>>
>>>
>>>
>>> jaimemm wrote:
>>>>
>>>> Taking the HTTP Client server example and including into a loop, to
>>>> send
>>>> N messages, the connection &  send message logic, the memory
>>>> consumption
>>>> raises over 500mb for just 700 messages (10Kb each) which causes the
>>>> OutOfMemoryException. Am I doing something wrong? is there any piece of
>>>> code susceptible of memory leaking? What should I check?
>>>>
>>>> thanks
>>>>
>>>
>>>
>>
>> --
>> View this message in context:
>> http://n2.nabble.com/OutOfMemory-in-HttpClient-tp2170142p2181002.html
>> Sent from the Netty User Group mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> netty-users mailing list
>> netty-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/netty-users
>>
>>
> 
> _______________________________________________
> netty-users mailing list
> netty-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/netty-users
> 
> 

-- 
View this message in context: http://n2.nabble.com/OutOfMemory-in-HttpClient-tp2170142p2185740.html
Sent from the Netty User Group mailing list archive at Nabble.com.





More information about the netty-users mailing list