Hi there. I noticed that my application is slow. I've decided to analyze GC logs and Heap dump. All of a sudden I got this: It starts from TaskThread which holds JRVerticalFiller, that one holds JasperPrint, from JasperPrint hand - Collections.synchronizedList(pages), these objects are JRTemplatePrintText. Here is a gc roots from TaskThread to Object[] (this Object[] in ArrayList) NOTE: I am using JRGzipVizualizer. Actually I don't understand why TaskThread is still alive and why so many objects are created. JRVerticalFiller took 3.6GB of 4GB heap memory.