Используйте среду Conda в Pycharm

Они ведут себя по-разному, когда объект, на который ссылаются их ключи / значения, удаляется. Давайте возьмем приведенный ниже пример кода:

var map = new Map();
var weakmap = new WeakMap();

(function(){
    var a = {x: 12};
    var b = {y: 12};

    map.set(a, 1);
    weakmap.set(b, 2);
})()

Вышеупомянутый IIFE выполняется, мы больше не можем ссылаться на {x: 12} и {y: 12}. Сборщик мусора идет вперед и удаляет указатель клавиши b из «WeakMap», а также удаляет {y: 12} из памяти. Но в случае «Карты» сборщик мусора не удаляет указатель с «Карты», а также не удаляет {x: 12} из памяти.

Резюме: WeakMap позволяет сборщику мусора выполнять свою задачу но не Карта.

Ссылки: http://qnimate.com/difference-between-map-and-weakmap-in-javascript/

61
задан Abhinav Rai 12 March 2017 в 11:18
поделиться