日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何定位和处理手机游戏内存泄露

發(fā)布時(shí)間:2024/8/26 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何定位和处理手机游戏内存泄露 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

由于內(nèi)存泄露導(dǎo)致的游戲BUG發(fā)生頻率很高,我也在此前的文章中談到過內(nèi)存占用過高會(huì)對(duì)手機(jī)中的應(yīng)用造成的影響,今天我們?cè)偕钊胩接懸幌聝?nèi)存泄露的問題。

內(nèi)存泄露是指程序中間動(dòng)態(tài)分配了內(nèi)存,但是在程序結(jié)束時(shí)沒有釋放這部分內(nèi)存,從而造成那一部分內(nèi)存不可用的情況,重起計(jì)算機(jī)可以解決,但是也有可能再次發(fā)生內(nèi)存泄露,內(nèi)存泄露和硬件沒有關(guān)系,它是由軟件設(shè)計(jì)缺陷引起的。

以發(fā)生的方式來分類,內(nèi)存泄漏可以分為4 類:


?

  • 常發(fā)性內(nèi)存泄漏。發(fā)生內(nèi)存泄漏的代碼會(huì)被多次執(zhí)行到,每次被執(zhí)行的時(shí)候都會(huì)導(dǎo)致一塊內(nèi)存泄漏。
  • 偶發(fā)性內(nèi)存泄漏。發(fā)生內(nèi)存泄漏的代碼只有在某些特定環(huán)境或操作過程下才會(huì)發(fā)生。常發(fā)性和偶發(fā)性是相對(duì)的。對(duì)于特定的環(huán)境,偶發(fā)性的也許就變成了常發(fā)性的。所以測試環(huán)境和測試方法對(duì)檢測內(nèi)存泄漏至關(guān)重要。
  • 一次性內(nèi)存泄漏。發(fā)生內(nèi)存泄漏的代碼只會(huì)被執(zhí)行一次,或者由于算法上的缺陷,導(dǎo)致總會(huì)有一塊僅且一塊內(nèi)存發(fā)生泄漏。比如,在類的構(gòu)造函數(shù)中分配內(nèi)存,在析構(gòu)函數(shù)中卻沒有釋放該內(nèi)存,所以內(nèi)存泄漏只會(huì)發(fā)生一次。
  • 隱式內(nèi)存泄漏。程序在運(yùn)行過程中不停地分配內(nèi)存,但是直到結(jié)束的時(shí)候才釋放內(nèi)存。嚴(yán)格的說這里并沒有發(fā)生內(nèi)存泄漏,因?yàn)樽罱K程序釋放了所有申請(qǐng)的內(nèi)存。但是對(duì)于一個(gè)服務(wù)器程序,需要運(yùn)行幾天,幾周甚至幾個(gè)月,不及時(shí)釋放內(nèi)存也可能導(dǎo)致最終耗盡系統(tǒng)的所有內(nèi)存。所以,我們稱這類內(nèi)存泄漏為隱式內(nèi)存泄漏。


?

壓力測試過程中針對(duì)內(nèi)存泄露主要關(guān)注如下指標(biāo):


?

  • Memory\ Available Bytes 是指剩余的可用物理內(nèi)存,單位是兆字節(jié)(參考值:>=10% )。表明進(jìn)程當(dāng)前可使用的內(nèi)存字節(jié)數(shù)。
  • Memory\ Pages/sec 是表明由于硬件頁面錯(cuò)誤而從磁盤取出的頁面數(shù),或由于頁面錯(cuò)誤而寫入磁盤以釋放工作集空間的頁面數(shù)。
  • Process\Private Bytes 是指當(dāng)前進(jìn)程中運(yùn)行的私有內(nèi)存,如果此內(nèi)存不斷攀升,表示當(dāng)前存在的內(nèi)存泄漏,一般情況如果資源合理利用的話,該指標(biāo)值波動(dòng)比較平穩(wěn)。


?

有效的監(jiān)控以上二手游戲買賣可以方便我們判斷內(nèi)存泄漏問題,測試人員發(fā)現(xiàn)此類內(nèi)存泄漏現(xiàn)象以后就要聯(lián)系開發(fā)人員去定位問題,再解決問題。當(dāng)多次測試后發(fā)現(xiàn)內(nèi)存值在某個(gè)特定值之間上下波動(dòng)時(shí),范圍值為20%左右時(shí)我們就可以認(rèn)為內(nèi)存泄露的問題基本解決了。

從用戶使用程序的角度來看,內(nèi)存泄漏本身不會(huì)產(chǎn)生什么危害,作為一般的用戶,根本感覺不到內(nèi)存泄漏的存在。真正有危害的是內(nèi)存泄漏的堆積,這會(huì)最終消耗盡系統(tǒng)所有的內(nèi)存。從這個(gè)角度來說,一次性內(nèi)存泄漏并沒有什么危害,因?yàn)樗粫?huì)堆積,而隱式內(nèi)存泄漏危害性則非常大,因?yàn)檩^之于常發(fā)性和偶發(fā)性內(nèi)存泄漏它更難被檢測到。

其實(shí),內(nèi)存泄漏問題多半在手游壓力測試中出現(xiàn)也是源于程序編寫過程中沒有規(guī)范化管理所導(dǎo)致,開發(fā)人員需要結(jié)合內(nèi)存監(jiān)測工具來有效監(jiān)控自己的程序,這樣才會(huì)避免這些個(gè)低級(jí)的瓶頸出現(xiàn),所以說手游性能測試只是為程序提供優(yōu)化建議,而不應(yīng)該成為幫助開發(fā)人員調(diào)試游戲的一種手段。

總結(jié)

以上是生活随笔為你收集整理的如何定位和处理手机游戏内存泄露的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。