Can anyone please help me to understand the proper use of the dispose().  

Does dispose() get called automatically or do I have to make a call to it? 

In a game I'm writing, I use a texture atlas and an asset manager for all of the textures I use. I have an abstract class called Enemy and every type of enemy extends it.
I have an arraylist that holds all of my enemies, and when an enemy is dead, I remove it from the arraylist. Do I need to make a call to the dispose() method in the individual enemy classes to remove the textures from memory before removing it from the arraylist or does it happen automatically or is that not how dispose() gets used period? (Each individual type of enemy class sets its own textures by using a TextureRegion)