私は GC の専門家ではありませんが、GC が機能するにはVMが必要であると常にイメージしています。
私が正しければ、ネイティブ コードはどのように GC を取得しますか?
Ocaml は 2 つの異なるヒープを維持します。1 つは Ocaml データ用で、もう 1 つは malloc された C データ用です。C FFI 関数 (通常は C ヒープへのスマート ポインターによって表される抽象型) から値を返す場合、それらの値は ocaml ガベージ コレクターによって追跡されます。GC は、データに到達できないことに気付くと、スマート ポインターを介して関連するファイナライズ関数を呼び出します。したがって、オブジェクトの作成時に C インターフェースで malloc を実行し、ガベージ コレクション時に解放することが可能です。