% This file is part of Jiffy released under the MIT license.
|
|
% See the LICENSE file for more information.
|
|
|
|
-module(jiffy_14_bignum_memory_leak).
|
|
|
|
-include_lib("eunit/include/eunit.hrl").
|
|
|
|
|
|
bignum_encoding_leak_test_() ->
|
|
run_gc(),
|
|
Before = erlang:memory(binary),
|
|
encode_bignums(1000000),
|
|
run_gc(),
|
|
After = erlang:memory(binary),
|
|
?_assert(After - Before < 100000).
|
|
|
|
|
|
run_gc() ->
|
|
[erlang:garbage_collect(Pid) || Pid <- erlang:processes()].
|
|
|
|
|
|
encode_bignums(N) ->
|
|
{_, Ref} = spawn_monitor(fun() ->
|
|
[jiffy:encode(1072502107250210725021072502) || _ <- lists:seq(1, N)]
|
|
end),
|
|
receive
|
|
{'DOWN', Ref, process, _, _} ->
|
|
ok
|
|
end.
|