Hello All,
I am using a simple job that reads the file and writes the read line to another file (just doing a volume testing with spring batch). The input file is more than 7GB.
I have file reader (FlatFileItemReader) and a file writer (FlatFileItemWriter). Is there a limitation on the number of records that can be processed at a single time (I suppose not).
Here is the error, if someone can hint me know what might be wrong, I can check it out:
Code:Caused by: java.lang.OutOfMemoryError: Java heap space at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder. java:99) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:518 ) at java.lang.StringBuffer.append(StringBuffer.java:307) at java.io.BufferedReader.readLine(BufferedReader.java:345) at java.io.BufferedReader.readLine(BufferedReader.java:362) at org.springframework.batch.item.file.separator.ResourceLineReader$Stat e.readLine(ResourceLineReader.java:225) at org.springframework.batch.item.file.separator.ResourceLineReader.read Line(ResourceLineReader.java:134) at org.springframework.batch.item.file.separator.ResourceLineReader.read (ResourceLineReader.java:120) at org.springframework.batch.item.file.FlatFileItemReader.readLine(FlatF ileItemReader.java:103) at org.springframework.batch.item.file.FlatFileItemReader.doRead(FlatFil eItemReader.java:266) at org.springframework.batch.item.support.AbstractBufferedItemReaderItem Stream.read(AbstractBufferedItemReaderItemStream.java:92) at org.springframework.batch.item.support.DelegatingItemReader.read(Dele gatingItemReader.java:61) at org.springframework.batch.core.step.item.BatchListenerFactoryHelper$1 .read(BatchListenerFactoryHelper.java:67) at org.springframework.batch.core.step.item.SimpleItemHandler.doRead(Sim pleItemHandler.java:88) at org.springframework.batch.core.step.item.SimpleItemHandler.read(Simpl eItemHandler.java:80) at org.springframework.batch.core.step.item.SimpleItemHandler.handle(Sim pleItemHandler.java:66) at org.springframework.batch.core.step.item.ItemOrientedStep$2.doInItera tion(ItemOrientedStep.java:390) at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult (RepeatTemplate.java:346) at org.springframework.batch.repeat.support.RepeatTemplate.executeIntern al(RepeatTemplate.java:212) at org.springframework.batch.repeat.support.RepeatTemplate.iterate(Repea tTemplate.java:143) at org.springframework.batch.core.step.item.ItemOrientedStep.processChun k(ItemOrientedStep.java:383) at org.springframework.batch.core.step.item.ItemOrientedStep$1.doInItera tion(ItemOrientedStep.java:251) at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult (RepeatTemplate.java:346) at org.springframework.batch.repeat.support.RepeatTemplate.executeIntern al(RepeatTemplate.java:212) at org.springframework.batch.repeat.support.RepeatTemplate.iterate(Repea tTemplate.java:143) at org.springframework.batch.core.step.item.ItemOrientedStep.doExecute(I temOrientedStep.java:231) at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep .java:172) at org.springframework.batch.core.job.SimpleJob.execute(SimpleJob.java:1 00) at org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run (SimpleJobLauncher.java:86) at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecut or.java:49)
I have a java object with one bytearray property. In my FieldSet Mapper I read first 100 bytes of the input line into this byte array and then in my writer (with PassThrough fieldset creator), I do a new String(byteArray) and write it out.
I also tried with that java object property as String. I am using Spring Batch 112.
Please let me know your thoughts. Also let me know whether there is a way I can speed this.
Thanks!!


Hello All,
Reply With Quote