the garbage collector of Java runs as a background daemon in a special thread whenever the JVM is started. Of course it regularly has to do it's job so it obviously consumes resources like CPU power. On a single processor system it's clear that there's no chance for other threads to proceed if the garbage collector thread is active because there's no real multi threading on such system. But unlike earlier version of Java and the JVM the garbage collector is really, really clever and you don't notice it doing its work in normal applications. It would be no problem to provoke lags in your program flow by allocation and deallocation enormous amounts of memory without sense but this would also lead to inefficiencies in programming languages without garbage collector.