Пример тестового Java-кода, который может продемонстрировать фрагментацию памяти в куче
Я хотел бы понять, как может происходить фрагментация памяти, написав какой-то плохой код в пользовательском пространстве Java.
Пожалуйста, укажите мне некоторые идеи, которые могут помочь мне понять это.
В моем понимании, как я думал, фрагментация кучи Java может произойти только из-за глючной сборки мусора, но некоторые из моих друзей утверждали обратное.
Я просто хочу понять, что фрагментация Java Heap может происходить и при написании приложений с плохим Java-кодом.
NB: я ищу фрагменты кода, которые могут продемонстрировать этот аргумент.
ОБНОВИТЬ:
Фактически jvm, который мы имеем во встроенном устройстве, является java 1.3.
Спасибо,
сен
1 ответ
Прежде всего, сборщик мусора зависит от JVM. Я знаю только OpenJRE и Sun JRE. Используемые там сборщики мусора уплотняют кучу во время сбора, поэтому фрагментация кучи НЕ может происходить из-за особенностей управления памятью.
Другие алгоритмы управления памятью, которые раньше использовались чаще, используют свободный список и не перемещают память в куче. Для таких схем управления фрагментация кучи может быть проблемой.