(ES6) ES6 (2016)

GarbageCollection (GC04)

   1:  const activeUsers = new WeakSet();
   2:  function addUser(user) {
   3:      activeUsers.add(user);
   4:      console.log(`User ${user.name} added`); // Example log message
   5:  }
   6:  function removeUser(user) {
   7:      activeUsers.delete(user);
   8:      console.log(`User ${user.name} removed`); // Example log message
   9:  }
  10:  function processActiveUsers(users) {
  11:      users.forEach(user => {
  12:          if (activeUsers.has(user)) {
  13:              console.log(`User ${user.name} is currently active.`); // perform some operation with active user.
  14:          } else {
  15:              console.log(`User ${user.name} is not currently active.`); // perform another operation if user isn't active
  16:          }
  17:      });
  18:  }
  19:  const user1 = { name: 'Bob' };
  20:  addUser(user1);
  21:  processActiveUsers([user1]); // Bob is active
  22:  removeUser(user1);
  23:  processActiveUsers([user1]); // Bob isn't active



WeakSet stores only objects, no primitive values
// Now even if external array of users isn't cleared, `user1` can be garbage collected





GarbageCollection context:






ES6 context:



Comments ( )
<00>  <01>  <02>  <03>  <04>  <05>  <06>  <07>  <08>  <09>  <10>  <11>  <12>  <13>  <14>  <15>  <16>  <17>  <18>  <19>  <20>  <21>  <22>  <23>  <24>  <25
Link to this page: http://www.vb-net.com/JavascriptES6/GC04.htm
<TAGS>  <ARTICLES>  <FRONT>  <CORE>  <MVC>  <ASP>  <NET>  <DATA>  <TASK>  <XML>  <KIOSK>  <NOTES>  <SQL>  <LINUX>  <MONO>  <FREEWARE>  <DOCS> <TRAVELS> <FLOWERS> <RESUME> < THANKS ME>