Are ES Modules garbage collected? If so, do they re-execute on next import?

#!/JoePea joe at trusktr.io
Wed Jul 1 00:41:30 UTC 2020


I am curious: can modules be garbage collected if the exports are not
references by anything anymore? And if so, will the module be
re-evaluated the next time it is imported?

I haven't tried an experiment to answer this yet. I'll be back to post
findings if someone doesn't post an official answer first.

I'm thinking about code longevity. For example, if we make
long-running web-based applications with many routes and features (for
sake of example imagine a desktop environment, or a MMORPG game, with
apps or components that are loaded within the same context). Over
time, if imports are not collected, then it means we have a memory
leak.

Imagine, for example, an infinite-universe MMORPG where you can land
on different planets where the code for features of a planet are
provided by third parties as ES Modules. I know, this might not be a
safe idea to import any code into an app, but just imagine it for sake
of example (imagine we have a continuous integration system to test
and verify code security, or something, before that code is allowed to
be consumed in the app). Imagine you play this app for many many days,
and visit many places, and you leave the app running the whole time
(because farming for resources is disabled if the app is not running,
or something).

I would imagine that we want unused modules (when we leave a planet,
for example) to be (destroyed) garbage collected so that we don't
waste memory.

#!/JoePea


More information about the es-discuss mailing list