游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1624|回复: 0

Javascript大量调用eval导致内存泄漏

[复制链接]

31

主题

257

帖子

1752

积分

金牌会员

申城谍影

Rank: 6Rank: 6

积分
1752
QQ
发表于 2020-3-30 12:54:27 | 显示全部楼层 |阅读模式
我的网站,需要大量从服务器读取wave文件到前端,

一开始是用JQuery的post来读取,发现随着运行,大量调用,内存占用增长很快。



内存的增长不全是wave文件的占用,因为所有的wave文件不超过100M。

从任务管理器看,浏览器的内存占用会从1G增加到2, 3G,然后还在不断增长。



于是自己new XMLHttpRequest,维护一个对象池,不断重用,

内存泄漏减轻好多。



但是发现还是有内存泄漏,当时不影响网站使用,就一直没解决。



最近用Chrome的内存堆快照分析,

发现很多上述ajax返回的字串没有释放。

这些字串用完都赋值为null,不清楚为啥会泄漏。



仔细观察,这些字串都包在()里。

因为ajax返回的是JSON字串,收到后,把它包在()里,用eval解析成JSON对象。



于是把eval换成JSON.parse,内存泄漏就全部消失了。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-4-25 22:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表