Блог пользователя mbrc

Автор mbrc, история, 6 лет назад, По-английски

According to the blog about languages, the -Xmx option for Java is set to 512M. So consider 1097F - Alex and a TV Show from Hello 2019, with a ML of 256M. In this problem, my submission 47948716 takes > 200M memory. With n = 1e5, q = 1e6, t = 1, x = <cycle through 1 .. n>, v = 1,the code takes ~207M on Custom Test. But by setting -Xmx130M, this still runs on my system in time (without -Xmx it took ~270M on my system). This probably means that Java doesn't garbage collect as it still has memory left.

Also according to the following StackOverflow answer: ...Java will use as much memory as it is allowed to, at which point it will garbage collect. To work around this, you can specify a smaller max heap size in the JVM settings. You do this with the -Xmx setting....

Since Codeforces sets the -Xmx to 512M and many problems have ML 256M, is it possible that a piece of code continues to take up memory (since it can go upto 512M) without garbage collecting, and consequently gets MLE verdict, when it could have actually done with 256M and some garbage collection?

  • Проголосовать: нравится
  • +40
  • Проголосовать: не нравится

»
6 лет назад, # |
  Проголосовать: нравится +24 Проголосовать: не нравится

It did happen to me once but not on CF(I think it was on Yandex.Contest)

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    It seems possible. Idk if there are any guards against that on CF.

»
6 лет назад, # |
  Проголосовать: нравится +42 Проголосовать: не нравится

Hi, we don't use -Xmx512M now. Please, read https://codeforces.net/blog/entry/43696

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +16 Проголосовать: не нравится

    Oh, didn't find that during search. Thanks! That's reassuring.