One scenario of having memory leak by ajax is when validating the value of a combobox by ajax. The combobox is referenced in/by the ajax callback function. However, if the combobox is destroyed for some reason, it cannot be garbaged collected unless the callback function is also destroyed. Unfortunately, at the time of destroying the combobox there is no way to know which callback functions are referencing the combobox. The following link provides a partial solution to this problem.
if the Combo is destoyed mid-ajax call, couldn't you hook into the Combo's destroy event and cancel the underlying Store's Ext.Ajax.request, then purge all of the Combo's listeners (and hence callbacks)?
(note 1: the existing codebase does not destroy the Combo's store when the Combo is destroyed -- it only dissociates the Store from the Combo using the Combo's private bindStore() method, then purges all Combo listeners)
(note 2: ajax calls made via Ext.Ajax.request() are assigned unique transaction ids which may later be cancelled using Ext.Ajax.abort(<transaction id>))
Thanks Mystix. It sounds like a good approach. Although we are using different store for ajax validation, we can still register that store to the combobox. When combobox is destroyed, abort the ajax call.