I've read a couple of thought-provoking articles:
They provide several techniques to solve some issues while doing FFI in garbage-collected languages.