Исправление alysnix, (текущая версия) :
Ты смотри какой ты хитренький человек. Берешь и выбрасываешь на помойку преимущество того что сборка мусора позволяет отложить и совместить удаление памяти вместо кучи раздельных вызовов free, которые фрагментируют выделеную память.
если без уплотнения - они все равно это делают по «free», поскольку мусор раскидан по памяти стохастически.
а если с уплотнением - то это перенос всей занятой памяти в начало кучи, коррекция адресов в прокси-указателях, мусор еще надо найти, плюс проблемы с потоками…это вообще не сравнимо с работой malloc/free.
А между прочим в языках со сборкой мусора, которая утрамбовывает указатели угадай какая алгоритмическая сложность new? Амортизированый O(1).
в хипменеджерах масса всяких стратегий, но наиболее попсовая - списки свободной памяти со свободными блоками фиксированого размера. то есть если вам надо N байт, тут же берется список свободных блоков с размером ближайшим(сверху) к этим N байт и первый блок оттуда отдается вам. сложность O(1).
фрагментации не просходит по любому, поскольку при освобождении всегда делается слияние со свободными соседями. получается большой блок, который кладется в подходящий список свободных.
работы ЗНАЧИТЕЛЬНО меньше чем мусор собирать.
Исходная версия alysnix, :
Ты смотри какой ты хитренький человек. Берешь и выбрасываешь на помойку преимущество того что сборка мусора позволяет отложить и совместить удаление памяти вместо кучи раздельных вызовов free, которые фрагментируют выделеную память.
если без уплотнения - они все равно это делают по «free», поскольку мусор раскидан по памяти стохастически.
а если с уплотнением - то это перенос всей занятой памяти в начало кучи, коррекция адресов в прокси-указателях, мусор еще надо найти, плюс проблемы с потоками…это вообще не сравнимо с работой malloc/free.
А между прочим в языках со сборкой мусора, которая утрамбовывает указатели угадай какая алгоритмическая сложность new? Амортизированый O(1).
в хипменеджерах масса всяких стратегий, но наиболее попсовая - списки свободной памяти со свободными блоками фиксированого размера. то есть если вам надо N байт, тут же берется список свободных блоков с размером ближайшим(сверху) к этим N байт и отдается вам. сложность O(1).
фрагментации не просходит по любому, поскольку при освобождении всегда делается слияние со свободными соседями. получается большой блок, который кладется в подходящий список свободных.
работы ЗНАЧИТЕЛЬНО меньше чем мусор собирать.