defmodule Wobserver.System.Memory do
@moduledoc ~S"""
Handles memory information.
"""
@typedoc ~S"""
Memory information.
"""
@type t :: %__MODULE__{
atom: integer,
binary: integer,
code: integer,
ets: integer,
process: integer,
total: integer,
}
defstruct [
atom: 0,
binary: 0,
code: 0,
ets: 0,
process: 0,
total: 0,
]
@doc ~S"""
Returns memory usage.
"""
@spec usage :: Wobserver.System.Memory.t
def usage do
mem = :erlang.memory
%__MODULE__{
atom: Keyword.get(mem, :atom),
binary: Keyword.get(mem, :binary),
code: Keyword.get(mem, :code),
ets: Keyword.get(mem, :ets),
process: Keyword.get(mem, :processes),
total: Keyword.get(mem, :total),
}
end
end