Symptom
A session fails with an error like the following :
com.indy.engine.common.exceptions.EngineExceptionI: Unknown java.lang.error working with the engine, contact your supplier
at com.indy.engine.action.common.ActionCodeTypeI.executeCode(SourceFile:1688)
at com.indy.engine.action.common.ActionCodeTypeI.run(SourceFile:1805)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.OutOfMemoryError: Java heap space
Solution
This can happen on SqlOperation and SqlFileExport actions when loading a large amount of data, which fills up the Java Virtual Machine's memory.
Go into the process details, and look at the parameters of the action that failed - or the previous action if it is a bound action.
Reduce the "Fetch Size" (usually in the SQL action or in the Template parameters)
- A lower value will require the lowest memory but with slower performance.
- A higher value will require more memory but with better performance.
Alternatively, you can increase the Runtime's max memory (parameter STAMBIA_MAX_MEMORY in initvariables.bat).
A specific forum thread was created on this kind of error, feel free to discuss or ask help: http://stambia.org/forum/runtime-questions/25-my-process-crash-with-a-java-heap-space-error
Comments
Could the solution of increasing the parameter STAMBIA_MAX_MEMORY solve the issue "java.lang.OutOfMemoryError: GC overhead limit exceeded" too ?
My question is that, today, STAMBIA_MAX_MEMORY is set to 512m. It refers to the RAM, right ?
If I have 4Go of RAM on my server, it is reasonable to increade this parameter to 2Go (2048m) for instance ?
The only applications running on this server are Stambia runtime and Analytics.
Thank you.
Emmanuel
Increasing the Runtime's memory can be a good idea when manipulating large XML structures, or using in-memory temporary storage. If you have free memory, then use it. Just make sure the OS and other apps will have what they need