GC,or Garbage Collection is an intresting things. It help developers to deal with useless Object. When We use C++, we need to think about the deconstruction method to ensure the memory not lost. But with Java, it seems the JVM will do all things for us. Does it mean we need not to think about memory problem?
Of cource, not. Although one of my teachers told us not to try to chanllenge GC, it is better than human do. These days i am join a project with two fellows. It is about a search engine component. When we search pages, we built a tree as a structure. At first, so careless we are. as a result, little waste for each page cause a large waste for all site, at last JVM throw a OutOfMemory Exception. Gradually, we make some change, then it is better, but still throw a OutOfMemory after a longer period. We need to think over everywhere to avoid the memory waste. we need to under stand how JVM works, and make garbage easy to be collected.
For more detail and deep explore, you can try to see some Real Time Java book. Here, I just share some experience with you.
1. you can use java -verbose:gc [CLASSNAME] to observe the GC status.
2. temp Object in one function is easier to be collected
3. Object with less reference is easier to be collected
4. don't new a object you will not use for now
5. iterative method save more memory than recursion.But recursion seems more clearly. Decided by you.
6. A complex structrue is difficult for collect
7. System.gc() and fianlize() is useless for speed the process of GC
8. use static to share same object or use reference to share same object
9. you can use java -Xmx?m [CLASSNAME] to give JVM ? M memory to run programe. for instance, java -Xmx4m ShuJIP.HelloWorld
10. when you needn' to use one object,make it to null.maybe it is helpful for GC to recogonize it.
in a word, we haven't method to destroy useless object,it will be done by JVM, but you need to think more about the method of process. You programe will be effective