当前位置: 首页 > 面试题库 >

Angular JS ng-repeat占用更多浏览器内存

蔺山
2023-03-14
问题内容

我有以下代码

<table>
 <thead><td>Id</td><td>Name</td><td>Ratings</td></thead>
 <tbody>
   <tr ng-repeat="user in users">
    <td>{{user.id}}</td>
    <td>{{user.name}}</td>
    <td><div ng-repeat="item in items">{{item.rating}}</div></td>
   </tr>
 </tbody>
</table>

users是仅具有id和name的用户对象的数组。数组中的用户对象数-150

items是仅具有id和rating的item对象的数组。数组中的项目对象数-150

当我在浏览器中渲染此图像时,当我尝试在chrome-v23.0.1271.95中进行性能分析时,它将占用约250MB的堆内存。

我正在使用AngularJS v1.0.3。

角度是否有问题,或者我在这里做错了什么?

这是JS小提琴

http://jsfiddle.net/JSWorld/WqSGR/5/


问题答案:

嗯,这不是ng-repeat本身。我认为这是事实,您正在使用{{item.rating}}添加绑定。

所有这些绑定都会在范围内注册监视,因此:

  • 150 * 2 = 300(用于2个用户信息)
  • 150 * 150 = 22500(用于评分信息)
  • 共有22800个手表功能+ 22800个dom元素。

那会将内存推到可以想象的250MB值

angularjs中的数据绑定

您实际上无法在一个页面上向一个人显示超过 2000条信息。除此之外,还真是糟糕的UI,人类无论如何都无法处理。



 类似资料:
  • 为什么我的java PID占用更多内存。目前我有24GB ram和max-xmx=15G。所以java PID的解决方案是占用更少的内存。 23794 root 0 22.2g 16.5g 13416 s 100.070.42980:54上面的java是我的最高命令结果。任何人都知道如何重新关注这个问题。

  • 我目前正在Jetty中运行一个Grails应用程序。它运行良好,但占用的内存比我想要的多。 显示Jetty正在运行,如下所示: 在我看来,Jetty可能使用的最大内存应该是。相反,它看起来是这样的: 显然,我不会期望内存使用量正好是320 MB,但难道不应该接近吗?为什么会是预期内存的两倍?如果有的话,那么当堆填满时,Java难道不应该拒绝分配更多的空间吗? 我试着详细了解是怎么回事,但在我看来,

  • Web 浏览器 Eclipse 系统内部自带了浏览器,该浏览器可以通过点击 Window 菜单并选择 Show View > Other,在弹出来的对话框的搜索栏中输入 "browser"。 在树形菜单中选择 "Internal Web Browser" 并点击 OK。 在内置浏览器中我们在地址栏中输入网址,如:http://www.w3cschool.cc,即可打开网页。

  • 请帮助选择如何存储消息: 1) 2) SET似乎比LIST更容易使用,但Redis会在每条消息中存储字段名,从而使内存使用量增加一倍吗?

  • 这是一个vue2的后台管理系统,有时候会发现这个标签页的内存一直上升,好像是有内存泄漏,像这种情况该怎么排查呢?

  • 在处理 ASP 脚本时,任何没有包含在 ASP 定界符或 <SCRIPT> 标记中的文本或图形都将被简单地返回给浏览器。可以通过使用 Response 对象显示地把内容发送给浏览器。 发送内容 要将内容从 ASP 定界符内部或过程发送给浏览器,可以使用 Response 对象的 Write 方法。例如,下面的语句可以根据用户是否访问过此页而发送不同的问候语: <% If FirstTime =