From what I have found on-line (Chap 19 of the OCaml manual, and Chap 20 of Real-World OCaml), it seems that memory outside of the OCaml heap, but pointed to by it, is not scanned by the GC.

Does anyone know: Is there any way to make outside memory scannable by the GC?

The reason I ask: 

I'm interested in implementing a custom memory management strategy that I can prove is safe in a language I will compile to OCaml. I'm thinking I'd like to allocate freeable memory outside the OCaml heap, but as OCaml values. Since these values can point to OCaml heap-resident data, they need to be scanned. But I don't want to have to explicitly register/deregister them as roots to the GC, or track all mutations to the values, if I can help it. Rather, having a single "persistent root" to my memory area, for purposes of scanning, would be ideal.

Thanks in advance for any help,

-Mike