50 mb compressed can easily be several hundred MBs uncompressed. Especially 
with Java Datentypes. You should increase the memory by at least 2 other GB, if 
you want to stay with your current solution.

Depending on your workbook structure you could skip reading sheets which are 
not relevant or just read one after the other. The following example uses this 
as part of hybrid streaming, but you could follow the same approach with the 
normal api(read only one sheet and ignore the others):
https://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/streaming/examples/HybridStreaming.java

I use the streaming classes as part of HadoopOffice (including support for 
encryption and digital signature) it is not so difficult to use.

> On 23. Jan 2018, at 15:22, maitrey <maitrey0...@gmail.com> wrote:
> 
> My file is 50MB and I got outofMemoryError in this statement.
> XSSFWorkbook workbook = new XSSFWorkbook(excelFilePath); 
> 
> this line causes to  java.lang.OutOfMemoryError: Java heap space
> 
> We have search and try to apply the solutions like SXSSF classes,
> StreamReader classes and SAX parser.
> But this needs big implementation in our application.
> We have the heap memory to 2GB but still we get this error.
> 
> Is there any way to use this constuctor? 
> we need workbook object. It is extensive used in application.
> I know there are similar questions like this. I have also tried to apply
> suggetions but it is not completly works in our case.
> 
> 
> 
> --
> Sent from: http://apache-poi.1045710.n5.nabble.com/POI-User-f2280730.html
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@poi.apache.org
> For additional commands, e-mail: user-h...@poi.apache.org
> 

Reply via email to