2016-06-18 2 views
-2

У меня есть интервью, и я спросил, как предотвратить фрагментацию памяти на Java. Может ли кто-нибудь обобщить, как Java справляется с этим? Я прочитал несколько документов, но это очень сложно.Как предотвратить фрагментацию на Java?

+0

Как этот заголовок относится к вашему вопросу? – Gendarme

+0

Вы ничего не делаете. JVM делает это. Слишком широкий. – EJP

+0

@EJP. Я уже знал это. Я пытаюсь понять, как Java делала это для предотвращения фрагмента памяти. спасибо –

ответ

2

Короткий ответ: вы используете коллекционный сборщик мусора.

За исключением того, что большинство современных реализаций Java использования коллекторно поколений по умолчанию. Другими словами, вам (программисту) не нужно решать проблему, потому что она уже решена.

Единственная ситуация, когда вы можете столкнуться с фрагментацией, - это если вы неправильно настроили сборщик низких пауз, и он вернулся к полной коллекции «остановить мир». В этот момент вы можете использовать сборщик без уплотнения, и может произойти фрагментация. Но решение состоит в том, чтобы настроить настройку (или приложение, или размер кучи), чтобы избежать попадания в эту ситуацию.


1 - Некоторые действительно старые реализации Java использовали примитивные сборщик метки развертки. Но они давно прошли.

+0

Но мне нужно знать, как это работает. Можете ли вы объяснить более подробно? –

+3

Есть (буквально) книги о том, как работают сборщики мусора. И множество других ресурсов в Интернете. Если вам нужен ответ, объясняющий, как работает коллекционер коллекций, ваш вопрос слишком широк. –

+0

@OP, как программист на Java, вам в основном не нужно заниматься wth сборкой мусора. Сбор мусора обрабатывается JVM, а не вами. – ifly6

Смежные вопросы