I have a memory leak in my application due to the RSSLConnection connection retaining references to by objects even after I have destroyed the eventqueue and the consumer and released the session via the API. Due to the connection retaining references to my Client class (which implements com.reuters.rfa.common.Client). How can I kill the connection so the referenced objects can be cleaned up?
RFA Java 8.0.1.E1 (latest) fixes objects-retention issue found when using batch snapshot requests.
--------------------------------------- rfaj8.0.1.E1.all --------------------------------------- RFA-304; RFA Java holds references to objects in consumer batch application space. This has been fixed. (CaseId: 04554581)
RFA/Java 8.0.0.L2 (latest 8.0.1) fixes a memory leak bug whereby connections will retain references to closures when returned to the pool.
--------------------------------------- rfaj8.0.0.L2.all --------------------------------------- rfaj3799; RFA Java holds on to references to Closure objects and thus prevents them from being garbage collected. This has been fixed. (CaseId: 03836653) (RFAJAVA-435)
Also a common missed step is that after deactivating an event queue one must drain the queue of events, this is not required in RFA/C++. Example:
private void drainqueue() { LOG.trace ("Draining event queue."); int count = 0; try { while (this.event_queue.dispatch (Dispatchable.NO_WAIT) > 0) { ++count; } LOG.trace ("Queue contained {} events.", count); } catch (DeactivatedException e) { /* ignore on empty queue */ if (count > 0) LOG.catching (e); } catch (Exception e) { LOG.catching (e); } }