Mnesia transaction memory is increasing

Hello everyone, I am using Mnesia to build a cacheing system, Encountered a problem:

Every time I use :mnesia.transaction, it will bring little memory consumption. Almost 10,000 :mnesia.transaction calls will consume 1MB of memory.

After some work, I found that the memory occupied by ets’s table: mnesia_transient_decision will continue to increasing. Every call to :mnesia.transaction will insert a record into table mnesia_transient_decision, and even if I use :mnesia_recover.allow_garb and :erlang.garbage_collect, the memory will not decrease. And I can’t delete this table.

Can someone help me? very appreciate

test code:

defmodule TestTransaction do
  alias :mnesia, as: Mnesia
  def init_mnesia do
    Mnesia.start()
    Mnesia.create_table(Person, attributes: [:age, :username], disc_copies: [node()])
  end
  def case_trans_read do
    f = fn ->
      Mnesia.read(Person, 2)
    end
    Mnesia.transaction(f)
  end

  def print_memory_info do
    IO.puts("total: #{:erlang.memory[:total]}, ets: #{:erlang.memory[:ets]}")
  end

  def benchmarking(_, 0), do: nil

  def benchmarking(f, n) do
    apply(TestTransaction, f, [])
    benchmarking(f, n-1)
  end

end

TestTransaction.init_mnesia

TestTransaction.benchmarking :case_trans_read, 10000

:observer_cli memory usage of ets:
|Table Name |Size | Memory |Type |Protection |KeyPos |Write/Read |Owner Pid |
|mnesia_transient_decision | 10002 | 1022.1172 KB | set | public | 2 | false/false | <0.214.0> |