Question: I just wanted to know which language has better memory management among C,C++ and Java,why is it so and it is based on what criteria? 

I know that Java uses garbage collection for freeing memory and C uses DMA functions.Does this make java better at memory management since it's handled automatically? I do not know C++ so I don't have much idea there,though I know it uses destructors and delete.

Any suggestions/ideas will be grately appreciated.

Answer: 
Java has memory management. C and C++ don't, so it's memory management is a function of the programmer.
The problem with Java is that since it does the garbage collection automatically, and you can only induce it to happen, you cannot free resources at the exact moment you want them to be freed. The advantage is that you do not have to worry about objects being left behind, because they won't affect your memory in the long run (as long as you don't keep a reference to them, of course).

For optimal memory management, I would recommend C or C++, even though between those two, I would say C++ because of the high number of features it has. As for particular arguments regarding the memory management between C and C++, I do not know.
In any case, the fact that they allow you to treat things in a much more controlled and customized way, means that you must not relax and forget to do that management yourself.

Hope that helps.