Там мне сказали, что это плохая практика, но потом мне также сказали, что работает сборщик мусора. больше не останавливать мир систематически, и что это также может эффективно использоваться JVM только как подсказка, так что я в некоторой растерянности.
Я Поймите, что JVM обычно знает лучше вас, когда ей необходимо освободить память. Я также понимаю, что беспокоиться о нескольких килобайтах данных глупо. Я также понимаю, что даже мегабайты данных — это уже не то, что было несколько лет назад. Но все же 1,5 гигабайта? И вы знаете, что в памяти хранится около 1,5 ГБ данных; это не выстрел в темноте. Является ли System.gc() систематически плохим или есть какой-то момент, когда все становится хорошо?
Так что вопрос на самом деле двойной:
- Почему вызов System.gc() является плохой практикой или не является ли это плохой практикой? Действительно ли это просто намек на JVM в определенных реализациях или это всегда полный цикл сбора данных? Существуют ли действительно реализации сборщика мусора, которые могут выполнять свою работу, не останавливая мир? Пожалуйста, пролейте свет на различные утверждения, сделанные людьми в комментариях к моему ответу.
- Где порог? никогда стоит вызывать System.gc() или бывают случаи, когда это приемлемо? Если да, то в какое время?
Подробнее здесь: https://stackoverflow.com/questions/241 ... -system-gc
Мобильная версия