Allow to configure memory allocation for UTBot
Description
Sometimes during test generation UTBot fails with OutOfMemoryError exception (see comment ). Currently UTBot subprocess starts with default memory settings and user cannot change it to resolve such problem.
Expected behavior
There is setting .utbot\settings.properties file to change memory allocation settings. For now it seems to be a rare problem, so I think we should not expose it to IDEA settings UI.
Potential alternatives Dynamically decide how much memory to use based on available memory. But that seems more error-prone solution and may not resolve such problem.
Where is the settings file located?
Where is the settings file located?
Should be here: C:\Users\xxxxx\.utbot\settings.properties
Hi, @tosha63 We've prepared dev-build with such option, could you try it and let us know results? How to:
- Add to
C:\Users\xxxxx\.utbot\settings.propertiesfile new line with VM memory option for child process
engineProcessJavaOptionalArguments="-Xmx4g"
- Download utbot-intellij-IU-deni-2023.10.27-build plugin
- Install it in IDEA: Settings->Plugins->Gear icon->Install Plugin from disk
- Restart IDEA (restart it again every time you change memory option)
- Try to generate tests
Good afternoon I downloaded a new plugin and installed it. I added the option, but I get the same error. Maybe I'm doing something wrong?
Good day, could you verify that the option takes effect? Please, specify -Xms10g and check in Process Explorer or other similar tool that the memory consumption increased by 10g.
Before the launch it was 18.2GB, after starting the test generation it was 28.8GB
Could you substitute -Xms10g with -Xmx25g (not -Xms25g) now and check if the analysis eats up the memory? I just want to be sure that Soot indeed consumes all the memory and it is not constrained by other options.
If you cannot provide your example, you can try to simplify the method under test. Looks like in your particular situation there is some specific logic under the hood. Another solution is to try UTMock assumes (docs/AssumptionsMechanism.md). Finally, you can try to use only the fuzzing engine.
I tried to run generation even on simple methods in our project, but an error occurs. I used the fuzzing engine, everything is the same
I meant that you could try to decompose the method under test. What did you do to enable fuzzing only analysis?
In that case the issue is in Soot without doubts. It is difficult to do anything about it without a reproducer.