UTBotJava icon indicating copy to clipboard operation
UTBotJava copied to clipboard

Allow to configure memory allocation for UTBot

Open tyuldashev opened this issue 2 years ago • 13 comments

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.

tyuldashev avatar Oct 23 '23 11:10 tyuldashev

Where is the settings file located?

tosha63 avatar Oct 23 '23 11:10 tosha63

Where is the settings file located?

Should be here: C:\Users\xxxxx\.utbot\settings.properties

tyuldashev avatar Oct 23 '23 12:10 tyuldashev

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.properties file 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

tyuldashev avatar Oct 26 '23 08:10 tyuldashev

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?

image

tosha63 avatar Oct 26 '23 09:10 tosha63

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.

denis-fokin avatar Oct 26 '23 09:10 denis-fokin

Before the launch it was 18.2GB, after starting the test generation it was 28.8GB

image

tosha63 avatar Oct 26 '23 10:10 tosha63

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.

denis-fokin avatar Oct 26 '23 11:10 denis-fokin

image

tosha63 avatar Oct 26 '23 12:10 tosha63

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.

denis-fokin avatar Oct 27 '23 08:10 denis-fokin

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

tosha63 avatar Oct 27 '23 08:10 tosha63

I meant that you could try to decompose the method under test. What did you do to enable fuzzing only analysis?

denis-fokin avatar Oct 27 '23 10:10 denis-fokin

image

tosha63 avatar Oct 27 '23 11:10 tosha63

In that case the issue is in Soot without doubts. It is difficult to do anything about it without a reproducer.

denis-fokin avatar Oct 30 '23 07:10 denis-fokin