被面试官问到内存优化问题,被菜到了!
面试官:你一般是如何解决内存泄露问题的?( vue 项目)
我说:比如一些定时器,dom 事件、自定义事件用完后直接放到 beforedestroy 周期函数内销毁就可以了
面试官:但如果我刷新页面并不会执行 beforedestroy 哦,你再想想?按你说的不执行 beforedestroy 就无法销毁。
这问题把我问懵了,我问他他说让我回去试试 beforedestroy 是怎么执行的,并没有直接回答。
我试了下刷新确实不会执行 beforedestroy ,想问问大佬们,刷新页面没有执行 beforedestroy ,那页面不断刷新内存会一直涨吗?算不算内存泄漏?
刷新了整个 isolate 实例都被销毁重建了,哪来的泄露。
如果泄漏那是浏览器的问题
就这么回答:你就是个写前端的,用户在浏览器上点了刷新关你屁事。
刷新页面并不会执行 beforedestroy 这句话本身没问题, 但和内存泄漏也没关系.
或许面试官是想说异步嵌套, 事件订阅问题?
ruanyifeng.com/blog/2017/04/memory-leak.html
阮一峰这篇写的挺清晰的
浏览器前端哪来的内存泄漏我就不知道,都 xjb 考什么呢
你也知道有的面试官是在刷存在感,总得显得他比你懂得多,不然谁面试谁呢?
就算拔了电源也不会执行 beforedestroy
一般的页面场景很少内存泄露,除非是那种非得用着 webworker+webasm 做本来是 c++ native 应该做的事
比如连爱剪辑 快剪辑都做不过的超简单视频剪切功能
是有场景会常驻的 web 的,做 electron 和 hybrid 的都会遇到,内存泄漏根本还是用完及时回收,不一定非要在 vue 的生命周期里。非要兜底的话 web 有离开的 hooks 长用来埋点可以看 w3c 的 BOM 标准,面试官可能想问的是这个。宿主容器也有对应的 hooks ,防止泄漏在宿主容器上做更普遍。
可能你说的刷新页面是 location.reload ,而他理解的刷新页面是 history.pushState
在我的理解里,只有 C 之类的底层代码才需要考虑内存泄露问题,JS 在浏览器上跑,还需要考虑内存泄露吗?
你直接反问 你实际解决过内存泄漏
存在的……但是 js 跑在浏览器的时候浏览器会限制内存使用所以不会像 c 那样直接炸了……并且浏览器会在一定程度上预防,但是不代表代码运行时候不会出现内存泄漏
developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management 里面有讲到
你直接反问 你实际解决过内存泄漏
他会让你回去等通知
进入单页面时代之后,前端内存照样很容易泄露如果不注意资源释放,举个例子,通过组件创建 video 标签播放视频,退出时哪怕你把 video 移除可能都没有真正释放,必须先 stop
不释放的后果就是内存不断占用知道耗尽资源
另一个类似例子,单个标签下可创建的多媒体标签是有限的,哪怕 remove 掉似乎也会占用额度,超额之后就无法再申请
前端也谈内存泄露??
这面试官装逼, 前端能吃几个内存
啊?现在前端面试都谈内存泄漏了?笑拉了
面试从来都是双向选择
前端内存泄露会导致网页奔溃,一般都是定时器一直刷,没释放资源导致的。比如隔几秒调用一下 echart.init ,基本上半个小时就崩了
做 webgl 还有视频直播的时候遇到的内存泄露还是挺多的,反正在面试 webgl 的时候,内存管理应该是必问的,就单说 vue ,这种要管理组件的东西聊内存泄漏也是很正常的吧,不理解为什么楼上那么多人觉得离谱
前端那个不算内存泄露吧 你写的死循环或者定时器 一直不销毁内存肯定越来越多
那也该叫跳转页面
他会让你回去等通知
我直接说不必了已经拉黑了
还怕个毛等通知 明显装逼面试官
你问他刷新页面后浏览器是如何释放页面内存的
都刷新了,出现内存溢出难道不是浏览器的锅吗?这面试官是搞不懂 Vue 是干啥的吧
我也遇到过内存泄漏问题,场景就是一个类似于商场触摸屏那种东西
那个东西点击进入菜单一段时间没有操作就会有定时器返回首页
机器都是成天开,大量用户的时候,出现过内存泄漏
帮朋友问的 我用的 iPhone 不太清楚这个 现在还有什么手机挖矿的 app 可以玩吗 朋友空余时间多用来赚点小钱那种 Android 手机赚钱最快的方法是挂闲鱼,其他的…
有时候做 presentation 需要有一些 live coding ,如果用 Google Meet 分享屏幕的话有延迟不说,画质还经常被压缩到的。目前的想法是收集一下同事…
上周,在Sun的Java论坛上出现了一个这样的帖子,这个贴子的链接如下: http://forums.sun.com/thread.jspa?threadID=5404590&…