У меня есть двусвязный список, в котором каждый объект имеет данные и указатель на следующий объект и указатель на предыдущий объект, например:
obj1 <-> obj2 <-> obj3 <-> obj4 <->
Я использую этот код для удаления obj3
и obj4
: предположим, что p
- это данные obj2
let b = head;
while(b.next!=null){
b=b.next
if(b.data === p){
b.next = null;}}
При таком способе удаления указатель на obj3
теряется, поэтому obj3
и obj4
недоступны, но obj3
имеет указатель на obj2
в obj3.previous
.
Мой вопрос: если я использую этот код для удаления obj3
и obj4
, удалит ли сборщик мусора obj3
и obj4
из памяти? Если да, то как он понимает, что obj3
недоступен (будет ли он перебирать связанный список? Если да, операция займет время O (n)?). Мне важно знать, насколько сборка мусора javascript замедлит время выполнения (список очень длинный, и его повторение займет некоторое время)