diff options
| -rw-r--r-- | src/background_gc.erl | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/src/background_gc.erl b/src/background_gc.erl index 4722997a0b..0753dd6770 100644 --- a/src/background_gc.erl +++ b/src/background_gc.erl @@ -27,7 +27,7 @@ -define(DESIRED_HIBERNATE, 10000). -define(MAX_RATIO, 0.01). --define(IDEAL_INTERVAL, 5000). +-define(IDEAL_INTERVAL, 60000). -define(MIN_BYTES, 50000). -record(state, {last_interval}). @@ -35,7 +35,8 @@ %%---------------------------------------------------------------------------- start_link() -> - gen_server2:start_link(?MODULE, [], [{timeout, infinity}]). + gen_server2:start_link({local, ?MODULE}, ?MODULE, [], + [{timeout, infinity}]). %%---------------------------------------------------------------------------- @@ -70,14 +71,6 @@ run_gc(State = #state{last_interval = LastInterval}) -> State#state{last_interval = Interval}. do_gc() -> - MPs = rs([{M, P} || P <- processes(), - [{status, waiting}, {memory, M}] <- stats(P), - M > ?MIN_BYTES]), - Idx = trunc(math:pow(length(MPs) + 1, random:uniform())), - {_, Pid} = lists:nth(Idx, MPs), - garbage_collect(Pid), + [garbage_collect(P) || P <- processes(), + {status, waiting} == process_info(P, status)], ok. - -rs(L) -> lists:reverse(lists:sort(L)). - -stats(P) -> [erlang:process_info(P, [status, memory])]. |
