I understand that Xamarin GC is able to compact the heap so that fragmentation is reduced.
However I also read on mono's GC web page that "pinned" memory may still cause heap fragmentation.
Now for Xamarin the GC is based on "tarjan" implementation, but it doesn't say if tarjan improves this point, so I assume that the problem with pinned objects stayed the same.
We are developing a complex application that involves a lot of interrop calls to work with a native library, with some objects being pinned to be passed to the native layer.
I suspect that heap fragmentation could occur in our app, but I would like to confirm it.
Is there a way to confirm it with the tools we have at our disposal?
For example is there a way to measure the heap fragmentation %age?
Our device is an embedded device based on Android 4.2 and profiler is not working (we suspect that profiling has too much overhead, and we are already very close to hardware limit with our app running normally).