LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

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

если без уплотнения - они все равно это делают по «free», поскольку мусор раскидан по памяти стохастически.

а если с уплотнением - то это перенос всей занятой памяти в начало кучи, коррекция адресов в прокси-указателях, мусор еще надо найти, плюс проблемы с потоками…это вообще не сравнимо с работой malloc/free.

А между прочим в языках со сборкой мусора, которая утрамбовывает указатели угадай какая алгоритмическая сложность new? Амортизированый O(1).

в хипменеджерах масса всяких стратегий, но наиболее попсовая - списки свободной памяти со свободными блоками фиксированого размера. то есть если вам надо N байт, тут же берется список свободных блоков с размером ближайшим(сверху) к этим N байт и первый блок оттуда отдается вам. сложность O(1).

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

работы ЗНАЧИТЕЛЬНО меньше чем мусор собирать.

Исходная версия alysnix, :

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

если без уплотнения - они все равно это делают по «free», поскольку мусор раскидан по памяти стохастически.

а если с уплотнением - то это перенос всей занятой памяти в начало кучи, коррекция адресов в прокси-указателях, мусор еще надо найти, плюс проблемы с потоками…это вообще не сравнимо с работой malloc/free.

А между прочим в языках со сборкой мусора, которая утрамбовывает указатели угадай какая алгоритмическая сложность new? Амортизированый O(1).

в хипменеджерах масса всяких стратегий, но наиболее попсовая - списки свободной памяти со свободными блоками фиксированого размера. то есть если вам надо N байт, тут же берется список свободных блоков с размером ближайшим(сверху) к этим N байт и отдается вам. сложность O(1).

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

работы ЗНАЧИТЕЛЬНО меньше чем мусор собирать.