Могу ли я предложить JVM, когда выполнять сборку мусора? - PullRequest
0 голосов
/ 25 февраля 2019

Я использовал основанный на событиях фреймворк в своем java-коде, и есть событие, которое сработает, когда другие события не поступят, скажем, это событие бездействия потока.Я думаю, что сейчас самое подходящее время для проведения GC, поскольку выполнение GC в то время не повлияет на другие рабочие места.

Итак: 1, есть ли способ, которым я могу это сделать?2, я должен сделать это?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

1) System.gc()

2) Должен ли я это сделать?

Корень всего зла - преждевременная оптимизация

Я сомневаюсь в этомпоможет, и есть большая вероятность, что это ухудшит производительность.Что вы хотите оптимизировать?Пропускная способность или задержка?Как вы это измеряете?Это действительно сложно, так как с gc вы должны смоделировать производственную среду.System.gc () выполняет полный gc, поэтому он может вводить длинные паузы, когда короткие паузы молодого поколения были бы приемлемы.

Обратите внимание, что сборщик мусора G1 уже автоматически приспосабливается к загрузке системы.

0 голосов
/ 25 февраля 2019

Чтобы ответить на ваши вопросы:

Вы можете указать JVM начать сборку мусора, но JVM примет решение, когда и когда она будет собирать мусор.Объекты, которые больше не используются, будут автоматически собирать мусор.Если вы действительно хотите предложить JVM запустить сборку мусора, вы должны использовать следующую строку кода:

System.gc();

Но, как я уже сказал, JVM увидит, когда она больше не используется, сборка мусора это когдаон хочет / должен.

...