Closed
Description
Erlang R16B03-1
I have reproduced an issue when encoding big integers with jiffy. I tried version 13 and version 8.5. If you run this piece of code in your shell:
P2 = fun() ->
spawn_link(fun() ->
Parent = self(),
[erlang:garbage_collect(Pid) || Pid <- erlang:processes()],
Before = erlang:memory(binary),
io:format("Before ~p~n", [Before div 1000]),
Child = spawn_link(
fun() ->
[jiffy:encode(1072502107250210725021072502) || _ <- lists:seq(1, 1000000)],
Parent ! {finished, self()}
end),
receive
{finished, Child} ->
[erlang:garbage_collect(Pid) || Pid <- erlang:processes()],
After = erlang:memory(binary),
io:format("After ~p~n", [After div 1000]),
io:format("Diff ~p~n", [(After - Before) div 1000])
end
end)
end.
And then execute P2() several times you can see that the memory is not released. This doesn't happen with small integers.
(boodah_dev@lingon)22> P2().
Before 21119807
After 23207811
Diff 2088003
(boodah_dev@lingon)23> P2().
Before 23207809
After 25295802
Diff 2087992
(boodah_dev@lingon)24> P2().
Before 25295791
After 27383780
Diff 2087988
(boodah_dev@lingon)26> erlang:memory(binary).
27384865904
(boodah_dev@lingon)27> P2().
Before 27383796
After 29471788
Diff 2087991
Metadata
Metadata
Assignees
Labels
No labels