velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "E.R. van Es" <>
Subject stress application
Date Wed, 26 Oct 2005 15:08:56 GMT
Hello Velocity List,

  i have to create some big monthly reports on CD.  I use a simple java program to generate
all reports in HTML files using velocity templates.  All data is pre-loaded and then the reports
are created by iterating over the data.  However, there are too many files to create (over
9600) and after file 7850 I get a java memory exception.  I use a scheme like this:

*** JAVA CODE ***
private Context context;

private void processData() {
	ArrayList data = getDataKeys();	// this returns an array with all "data keys"
	Iterator i = data.iterator();
	while (i.hasNext()) {
		String key = (String);
		ArrayList data = getData(key);	// get all data objects for this key.
		context.put("key", key);
		context.put("data", data);
		processTemplate("template.vm", key + ".html");

private void processTemplate(String template, String outputFile) {
	FileWriter outputFileWriter = new FileWriter(new File(outputFile));

	Template x = Velocity.getTemplate(template);
	x.merge(context, outputFileWriter);


	... bla bla ...
#foreach ( $el in $data )
	and so on and so forth...
	... bla bla ...

As you can see I put every data class in the context with identifier "data", my thought was
to overwrite the previous one and NOT get a memory problem, however I do get the memory problem.
 I can adjust the java memory allocation to 1Gb but I was wondering if my approach just isn't
correct?  I'm not sure about the processTemplate method, though it workes perfectly for the
first 7800 files :)  By the way: I'm using velocity-1.4.

Thanks in advance,

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message