It really depends on what is inside this model. If it is binded to events from other instances - View/Collection/Models, you should remove those event listeners manually, since there is no way to remove all of them at once.
Also, Model.destroy() removes the model from any collections ( backbone documents ) :
Destroy model.destroy([options])
... Triggers a "destroy" event on the model, which will bubble up through any collections that contain it ...
The thing that you might want to do is assign a new destroy method which includes the event triggering and the stuff you want to remove.
destroy: function(options) { // Any events you wish to switch off ( if you have any ) SomeCollection.off('change', this.changeFn); Backbone.Model.prototype.destroy.apply(this, options); }
May be you should also be aware of some patterns for making less garbage from Models :
- Don't place your initialized model in a variable ( keep it in the collection );
- Make sure you write your code in a way that no events are binded from the Model ( Use views/collections for that );
- Keep your model code simple, since models in your app will be most numbered.
I think by following those rules you won't need to worry so much about garbage from your Models.