javascript - Chrome DevTools 内存不一致
问题描述
我正在使用以 60 FPS 运行的 JavaScript 构建游戏,并注意到发生了大量垃圾收集(每 1.5 秒 7.2 MB,请参阅下面的 Chrome DevTools),这对帧速率有显着影响。
我使用分配时间线来查看每一帧添加到内存中的内容。正如您在下面看到的,每帧分配了 4.1 kB。所以我希望看到每 1.5 秒收集 369 kB 垃圾。
为什么两者之间存在数量级差异?我一直在使用分配时间线来减少使用的内存(最初是每帧 18 kB)。但是,在查看“性能”选项卡时,这几乎是零影响。
有什么方法可以知道什么是垃圾收集,因为分配时间线似乎不正确?
附加信息
- 这是游戏中两个时刻之间的堆快照比较。这似乎也不一致,它包括很多我不希望每一帧都改变的东西。
我尝试在我的游戏中删除对象的数量(在一个数组中),这确实对性能选项卡产生了很大的影响。但我真的很想在 DevTools 的某个地方看到这个数组,以便我可以优化它。
我尝试在屏幕上禁用渲染,但这没有影响。所以GC来自游戏代码。
在 Safari 中测量显示与 Chrome 的性能选项卡类似的结果。
解决方案
推荐阅读
- python - Tkinter 画布图像错误
- swift - SwiftUI 和 CoreData:将 FetchResults 传递给 DetailView 并更新它们
- javascript - 如何从 Flask 返回错误以便 JavaScript 捕获它
- python - 使用 mpld3 将图形保存到 .html
- install4j - Install4J 自动更新版本检测
- python - 在同一单元格上具有多个类的列上的 Sklearn 编码
- aws-lambda - 在 lambda 函数中使用 npm 模块 (ogr2ogr) 不会返回任何结果
- python - 尝试使用 BeautifulSoup 从网页中提取表格(表格与真实数据不一致)
- javascript - 多个绝对元素的事件捕获
- r - 使用 sjPlot 在许多回归图中省略 m.labels