[erlang-questions] gen_server state is not released for gc

Björn-Egil Dahlberg <>
Fri Jan 13 18:50:00 CET 2012


On 2012-01-13 18:33, Volodymyr Kyrychenko wrote:
> Hi. Here is simple gen_server that holds binary in its state and never
> releases it.
>
> http://ideone.com/U4f9X
>
> 1>  X = myserver:start_link("/tmp/1.cache").
> {ok,<0.33.0>}
> 2>  myserver:info().
> {binary,[{140408119021616,401681797,2}]}
> 3>  myserver:release().
> ok
> 4>   myserver:info().
> {binary,[{140408119021616,401681797,2}]}
> 7>  memory(binary).
> 402043632
>
> How come there are 2 references on it and what to do to free this binary?
it is not gc:ed yet.
Try erlang:garbage_collect/0 info:

handle_call(info, _From, State) ->

   erlang:garbage_collect(),

   {reply, process_info(self(), binary), State};


// Björn-Egil



More information about the erlang-questions mailing list