Разница между RESTEasy и JAX-RS

Возможно, следующее объяснение будет более понятным для кого-то.

var k1 = {a: 1};
var k2 = {b: 2};

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

map.set(k1, 'k1');
wm.set(k2, 'k2');

k1 = null;
map.forEach(function (val, key) {
    console.log(key, val); // k1 {a: 1}
});

k2 = null;
wm.get(k2); // undefined

Как вы видите, после удаления клавиши k1 из памяти мы все равно можем получить доступ к ней внутри карты. В то же время удаление ключа k2 WeakMap также удаляет его из wm по ссылке.

Вот почему WeakMap не имеет перечислимых методов типа forEach, потому что нет такой вещи, как список WeakMap ключи, это просто ссылки на другие объекты.

13
задан Joachim Sauer 18 September 2012 в 18:55
поделиться