Il problema è sicuramente dovuto a ODP.NET. Se disabilito il pool di connessioni il problema non si manifesta. Per ogni connessione ODP.NET sembra creare 2 thread e ad intervalli di 3 minuti (come si vede nelle immagini) ODP.NET fa alcune pulizie ma per qualche motivo alloca memoria che non viene rilasciata immediatamente.
È facile da riprodurre. Basta creare una semplice app che quando viene premuto un pulsante viene aperta una connessione a un database Oracle e viene eseguita una stored procedure. Noterai il motivo della prima immagine. Lo schema delle altre immagini è dovuto al numero di connessioni create dall'app.