Пример тестового Java-кода, который может продемонстрировать фрагментацию памяти в куче

Я хотел бы понять, как может происходить фрагментация памяти, написав какой-то плохой код в пользовательском пространстве Java.

Пожалуйста, укажите мне некоторые идеи, которые могут помочь мне понять это.

В моем понимании, как я думал, фрагментация кучи Java может произойти только из-за глючной сборки мусора, но некоторые из моих друзей утверждали обратное.

Я просто хочу понять, что фрагментация Java Heap может происходить и при написании приложений с плохим Java-кодом.

NB: я ищу фрагменты кода, которые могут продемонстрировать этот аргумент.


ОБНОВИТЬ:

Фактически jvm, который мы имеем во встроенном устройстве, является java 1.3.

Спасибо,
сен

1 ответ

Прежде всего, сборщик мусора зависит от JVM. Я знаю только OpenJRE и Sun JRE. Используемые там сборщики мусора уплотняют кучу во время сбора, поэтому фрагментация кучи НЕ может происходить из-за особенностей управления памятью.

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

Другие вопросы по тегам