Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我应该担心100多个模块的html5应用程序的内存消耗吗?_Javascript_Performance_Memory_Amd - Fatal编程技术网

Javascript 我应该担心100多个模块的html5应用程序的内存消耗吗?

Javascript 我应该担心100多个模块的html5应用程序的内存消耗吗?,javascript,performance,memory,amd,Javascript,Performance,Memory,Amd,假设我有一个MVC html5应用程序,由100多个小模块组成。我希望它能在平板电脑或智能手机上尽可能流畅地运行 由于只有少数100多个模块同时使用,而且我想说,其中一半甚至在应用程序的普通会话中都并没有使用,所以将它们作为单个连接的js文件加载并将其全部保存在内存中感觉有点恶心 我目前使用的是CujoJS curl,它是一个AMD加载程序。这对于开发来说非常好,而且我认为它也非常适合某些生产环境。当然,缺点是单个文件需要更长的下载时间,但在这种情况下,我并不认为这是一个问题。我担心的是随着时间

假设我有一个MVC html5应用程序,由100多个小模块组成。我希望它能在平板电脑或智能手机上尽可能流畅地运行

由于只有少数100多个模块同时使用,而且我想说,其中一半甚至在应用程序的普通会话中都并没有使用,所以将它们作为单个连接的js文件加载并将其全部保存在内存中感觉有点恶心

我目前使用的是CujoJS curl,它是一个AMD加载程序。这对于开发来说非常好,而且我认为它也非常适合某些生产环境。当然,缺点是单个文件需要更长的下载时间,但在这种情况下,我并不认为这是一个问题。我担心的是随着时间的推移内存的使用情况,比如如果用户从不关闭窗口,并且在他们浏览应用程序时,内存中会不断累积更多的模块。据我所知,AMD装载机不提供任何卸载模块的方法

问题是,在这种情况下,我真的应该担心内存消耗吗?举个夸张的例子,即使在移动设备上,200KiB按需基本模块和4000KiB(从基本功能到几乎从未使用过的js代码功能)之间的内存使用差异是否可以忽略不计

如果我应该关注内存消耗,我应该做些什么来减少浪费的内存?我只能考虑通过提前计划、编写高效代码和卸载不需要的模块来最小化内存中的代码量。或者作为最后手段,在某些点重新加载页面


附加问题:如何从curl缓存中卸载模块?我在RequireJS中读到过,稍加调整就可以了,但对于curl我没有发现任何东西。

你指的是运行时内存还是带宽?请记住,源文件可以缩小和压缩。@Halcyon我指的是运行时内存。带宽是第二个问题。这取决于这些模块的实际大小。此外,即使是小模块也可以加载和存储大量数据,代码量与此无关。您不能自己加载任何代码,如果不再使用,引擎可能会释放代码从curl缓存中删除可能会允许引擎释放代码,但不能保证。您应该记住的一点是,所有当前的js引擎都进行实时编译,因为所使用的内存不仅取决于代码的大小,还取决于它的使用方式。问题的答案给出了一个解释,说明了为什么会出现这种情况。@t.niese因此,如果我编写一个每秒需要2MiB js文件的应用程序,应用程序可以无限期运行,并且不会耗尽内存?