8000 Memory leak when encoding big integers · Issue #69 · davisp/jiffy · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Memory leak when encoding big integers #69
Closed
@miriampena

Description

@miriampena

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0