We're seeing an issue similar to what is cited at:
Although, we are seeing it while using SqlClient as the provider, not Oracle.
It looks like internally, DatabaseSyntheticConfigSettings is doing something with the config file that is passed to it and not allowing itself to be garbage collected out, which creates behavior that looks like a memory leak.
I have attached a simple console program that reproduces the issue. It's worth noting that if I move the source out of the for loop (i.e. making it global for each instance of DatabaseSyntheticConfigSettings inside the for loop) the "leak" goes away.
Normally, I would expect the DatabaseSyntheticConfigSettings objects to be garbage collected once they fall out of scope, along with the instance of the IConfigurationSource.