我尝试了Node.js v12.14.1。 使用require()加载模块时,会将模块缓存并加载到内存中。
a。我们如何知道内存占用空间的大小? 我使用以下命令来了解使用了多少内存。有更好的方法吗?
$ /usr/bin/time -l <cmd>
0.08 real 0.04 user 0.01 sys
26722304 maximum resident set size // Provides the max memory usage in bytes
0 average shared memory size
0 average unshared data size
0 average unshared stack size
6714 page reclaims
0 page faults
0 swaps
0 block input operations
0 block output operations
0 messages sent
0 messages received
0 signals received
94 voluntary context switches
155 involuntary context switches
下面的命令(仅启动节点REPL)显示最大内存使用量为21 MB。
> $ /usr/bin/time -l node
运行仅加载单个模块(例如:https://www.npmjs.com/package/email-templates)的程序时,内存占用为76 MB。
var emailTemplates = require('email-templates');
$ /usr/bin/time -l node index.js
我知道点火解释器与TurboFan一起将包括字节码的代码优化为更小的,更优化的字节码,最后是机器代码。
b。这仅适用于频繁执行的热/热代码吗?是否以任何方式优化了加载的模块?
我的目标是编写快速,优化并具有较小内存占用的JavaScript代码。我已经阅读了有关编写良好代码的文章(例如,较小的命名函数,不混合对象属性的数据类型,使用Promise库而不是本地Promise等)
非常感谢您的帮助。