using clang Index for Find References query


Could someone give an advice how to use libclang for indexing and then make number of different "find references" queries?
Btw, filling Index by parsing all files cause out of memory, so have to save/dispose TU (translation unit) after creation.
Is it correct if index should be created only once?

If several TUs are in memory => are common headers data shared in memory or TUs do not know about each other?
Does Index know where saved TUs are stored? Can it load them itself on demand?

How then implement correctly "find reference" of the declaration within all TUs of Index (TUs are saved/disposed)?
Is Analyzer::FindReferences somehow exposed in C API.
I see clang_findReferencesInFile, but it is not what I need, right? Because reduce search scope to specified CXFile?

Thanks in advance!