Hello All,

Recently I have started using Apache Batik to create PDF files from SVG templates. The application is used to generate exam pages for students. It works great but it uses a huge amount of memory. This is sometimes annoying because i have to increase the memory limit to over 4Gb to have it complete the task. There are in general lots of students (500+) and in one case 2000+ students. This will, of course, eat memory like an elephant I accept that.

I want to reduce this memory footprint and have found one issue in my program where I need help with.

I am using the Java JRE 1.6.0_32, Batik 1.7 and PDFBox 1.6.0.

The program has the following flow:

1.    fetch students from source (Excel file)
2.    create workers to generate pdf from svg
3.    while not all students have been processed do
3.1 replace information in svg document ( using w3c functions from Document class ) (this is done by worker)
3.2      generate PDF from svg document (Using PDFTranscoder)
3.3 check if there are more students; true: goto 3.1; false: continue with step 4
4.   clean up workers
5.   generate single pdf from all generated pdfs using PDFBox
6.   done

It is a multi threaded environment and all the workers are in their own thread, each worker has a copy of the svg document, they dont share anything (for obvious reasons).

What I have found is what comes after step 4, after cleaning up the workers I am still using 1Gb of memory which is much more than when I start (around 128Mb). I suspect there is some caching here and there but I have not enough knowledge from batik to fix this problem.

Who can help me or has the answer for me?


Thanks in advance,

Hilbert Mostert

---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-h...@xmlgraphics.apache.org

Reply via email to