Объекты поступают по очереди. Нужно хранить в памяти последние N объектов. Объекты объемные по занимаемой памяти и число N достаточно большое.
Есть такая идея. Определяем массив arr и переменную i. По мере поступления объектов записываем их в массив. Если индекс i меньше maxi, то увеличиваем его на 1 и записываем по этому адресу. Если индекс i достиг maxi, то применяем к массиву метод shift(), который удаляет первый элемент и сдвигает все индексы, и записываем в массив по адресу i.
if( i<maxi ) i++; else arr.shift();
arr[i] = myobj;
Насколько это оптимально?
Как в javascript реализована функция shift()? Она физически перезаписывает элементы массива по новым адресам или массив там реализован как список и все происходит экономно?
Есть еще идея не сдвигать элементы массива, а постоянно наращивать индекс i, но удалять элементы из начала массива с помощью splice() или delete. Какой способ лучше?