How a garbage collector works of Java Language If you come from a programming language where allocating objects on the heap is expensive, you may naturally assume that Java’s scheme of allocating everything (except primitives) on the heap is also expensive。 However, it turns out that the garbage collector can have a significant impact on increasing the speed of object creation. This might sound a bit odd at first—that storage release affects storage allocation-but it’s the way some JVMs work, and it means that allocating storage for heap objects in Java can be nearly as fast as creating storage on the stack in other languages。For example, you can think of the C++ heap as a yard where each stakes out its own piece of turf object 。 This real estate can become abandoned sometime later and must be reused. In some JVMs, the Java heap is quite different; it’s more like a conveyor belt that moves forward every time you allocate a new object. This means that object storage allocation is remarkably rapid。 The “heap pointer” is simply moved forward into virgin territory, so it’s effectively the same as C++’s stack allocation. ( Of course , there's a little extra overhead for bookkeeping, but it’s nothing like searching for storage.) You might observe that the heap isn’t in fact a conveyor belt , and if you treat it that way, you'll start paging memory-moving it on and off disk, so that you can appear to have more memory than you actually do 。 Paging significantly impacts performance 。 Eventually, after you create enough objects , you’ll run out of memory. The trick is that the garbage collector steps in, and while it collects the garbage it compacts all the object...