Any objections if the following is added as a new issue in the issue tracker?

I am thinking that the selectKeys(sleepTime) call below really should be able 
to return immediately (thread interrupted, for example) if there has been a 
connection state change that needs attention. The sleepTime will then have 
little effect on how soon or how often controlConnections() is run.

Thanks,
Yan Zhou

> Hi,
> 
> We are noticing that an idling Restlet server has about 2MB of garbage 
> collected in 30 seconds.
> 
> I think I tracked it down to the loop in ConnectionController that invokes 
> the method below:
> 
> 
>     @Override
>     protected void doRun(long sleepTime) throws IOException {
>         super.doRun(sleepTime);
>         registerKeys();
>         updateKeys();
>         selectKeys(sleepTime);
>         controlConnections();
>     }
> 
> The sleepTime comes from the controllerSleepTimeMs parameter, which is 1 by 
> default.
> 
> So if the loop generates 60 bytes of garbage (2 iterator objects), it'd lead 
> to: 60 x 1000 x 30 = 1,800,000 bytes or 1.8MB every 30 seconds.
> 
> Can I ask if this is a known issue? And if there are workarounds?
> 
> I have already tried tweaking the controllerSleepTimeMs and changing it to 
> something like 30000 (30 seconds). Every connection then takes up to 30 
> seconds to close - probably not acceptable as a solution.
> 
> Additional info: Restlet 2.1 rc4 Android edition.
> 
> Thanks,
> Yan Zhou

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2972283

Reply via email to