国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層)

這篇具有很好參考價(jià)值的文章主要介紹了Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

游戲在bugly上內(nèi)存OOM越來(lái)越嚴(yán)重,因此,近期對(duì)內(nèi)存進(jìn)行優(yōu)化。從java層的內(nèi)存進(jìn)行優(yōu)化開始,通過(guò)LeakCannary或者adb shell 獲取到內(nèi)存快照,發(fā)現(xiàn)好幾處內(nèi)存泄漏點(diǎn)。

1.單例類持有Activity:

Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層),Android性能優(yōu)化,android,游戲,java
查看內(nèi)存快照,該閃屏頁(yè)面Activity(包含引用對(duì)象)可回收3.8M的內(nèi)存;
LeakCannary的內(nèi)存分析也證明了該對(duì)象占用的內(nèi)存大小,持有1380對(duì)象。
Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層),Android性能優(yōu)化,android,游戲,java
持有關(guān)系:
context.getContentResolver()注冊(cè)ContentObserver-->Activity的匿名內(nèi)部類Listener -->splashActivity。
Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層),Android性能優(yōu)化,android,游戲,java
解決方式:將匿名外部類,設(shè)置外部類或者挪動(dòng)到其他類中設(shè)置。
Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層),Android性能優(yōu)化,android,游戲,java

2.屏幕方向?qū)е翧ctivity被持有

WXPayEntryActivity的屏幕選擇導(dǎo)致的內(nèi)存泄漏:
Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層),Android性能優(yōu)化,android,游戲,java查看ActivityThread中源碼:
Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層),Android性能優(yōu)化,android,游戲,java
接著繼續(xù),看下是什么情況下會(huì)調(diào)用:
Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層),Android性能優(yōu)化,android,游戲,java
打開微信是豎屏顯示,而游戲是橫屏顯示,因此當(dāng)微信界面關(guān)閉后,會(huì)到游戲進(jìn)程中創(chuàng)建Activity時(shí),需調(diào)整屏幕,會(huì)調(diào)用 overrideApplicationDisplayAdjustments()矯正。
接著查看,手機(jī)系統(tǒng),發(fā)現(xiàn)屏幕設(shè)置是自動(dòng)旋轉(zhuǎn)。
再來(lái)查看下WXPayEntryActivit的屏幕配置是默認(rèn):
Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層),Android性能優(yōu)化,android,游戲,java
解決方式:加上android:screenOrientation="sensorLandscape"

Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層),Android性能優(yōu)化,android,游戲,java

3.Activity作為context被系統(tǒng)類持有

Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層),Android性能優(yōu)化,android,游戲,java
在廣告頁(yè)面的Activity 被GestureBoostManager持有,解決方案,是使用Appliction 作為context 去獲取系統(tǒng)類。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-608147.html

建議:

  • 盡量避免持有Activity ,盡量使用Application(除開dialog外);
  • 使用Acitivity中使用 匿名內(nèi)部類(避免:new Listener)等,在Ondestory()中要移除,避免匿名內(nèi)部類持有Activity導(dǎo)致內(nèi)存泄漏
  • 避免將Activity有關(guān)的屬性或者持有的activity的對(duì)象設(shè)置成static ,避免造成內(nèi)存泄漏;

到了這里,關(guān)于Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android性能優(yōu)化之游戲引擎初始化ANR

    Android性能優(yōu)化之游戲引擎初始化ANR

    近期,著手對(duì)bugly上的anr 處理,記錄下優(yōu)化的方向。 借用網(wǎng)上的一張圖: 這里的anr 問(wèn)題是屬于主線程的call 耗時(shí)操作。需要使用trace 來(lái)獲取發(fā)生anr前一些列的耗時(shí)方法調(diào)用時(shí)間,再次梳理業(yè)務(wù),才可能解決。 問(wèn)題1 java 調(diào)用棧: 從調(diào)用棧中發(fā)現(xiàn)onActivityResult()執(zhí)行對(duì)游戲側(cè)的

    2024年02月15日
    瀏覽(26)
  • Android之內(nèi)存泄漏與內(nèi)存溢出

    Android之內(nèi)存泄漏與內(nèi)存溢出

    內(nèi)存泄漏(memory leak):是指程序在申請(qǐng)內(nèi)存后,無(wú)法釋放已申請(qǐng)的內(nèi)存空間,導(dǎo)致系統(tǒng)無(wú)法及時(shí)回收內(nèi)存并且分配給其他進(jìn)程使用。通常少次數(shù)的內(nèi)存無(wú)法及時(shí)回收并不會(huì)到程序造成什么影響,但是如果在內(nèi)存本身就比較少獲取多次導(dǎo)致內(nèi)存無(wú)法正?;厥諘r(shí),就會(huì)導(dǎo)致內(nèi)存

    2024年02月13日
    瀏覽(25)
  • Android 內(nèi)存泄漏

    Android 內(nèi)存泄漏

    內(nèi)存泄漏:即memory leak。是指內(nèi)存空間使用完畢后無(wú)法被釋放的現(xiàn)象,雖然Java有垃圾回收機(jī)制(GC),但是對(duì)于還保持著引用, 該內(nèi)存不能再被分配使用,邏輯上卻已經(jīng)不會(huì)再用到的對(duì)象,垃圾回收器不會(huì)回收它們。 內(nèi)存溢出:即out of memory, 當(dāng)你要求分配的內(nèi)存超過(guò)了系統(tǒng)給你

    2024年02月08日
    瀏覽(27)
  • Android內(nèi)存泄漏分析及檢測(cè)工具LeakCanary簡(jiǎn)介,Android進(jìn)階

    Android內(nèi)存泄漏分析及檢測(cè)工具LeakCanary簡(jiǎn)介,Android進(jìn)階

    @Synchronized override fun expectWeaklyReachable( watchedObject: Any, description: String ) { if (!isEnabled()) { return } removeWeaklyReachableObjects() val key = UUID.randomUUID() .toString() val watchUptimeMillis = clock.uptimeMillis() val reference = KeyedWeakReference(watchedObject, key, description, watchUptimeMillis, queue) SharkLog.d { \\\"Watching \\\" +

    2024年04月25日
    瀏覽(17)
  • android 如何進(jìn)行內(nèi)存泄漏檢測(cè)及解決方法

    內(nèi)存泄漏是在Android開發(fā)中常見的問(wèn)題之一,它可能導(dǎo)致應(yīng)用的內(nèi)存占用逐漸增加,最終影響應(yīng)用的性能和穩(wěn)定性。以下是一些常見的方法來(lái)進(jìn)行內(nèi)存泄漏檢測(cè)和解決: 1. 使用工具進(jìn)行內(nèi)存泄漏檢測(cè): Android Profiler: Android Studio提供的Android Profiler工具可以幫助您監(jiān)視應(yīng)用的內(nèi)

    2024年02月07日
    瀏覽(41)
  • 【Android】一個(gè)contentResolver引起的內(nèi)存泄漏問(wèn)題分析

    長(zhǎng)時(shí)間的壓力測(cè)試后,系統(tǒng)發(fā)生了重啟,報(bào)錯(cuò)log如下 JNI ERROR (app bug): global reference table overflow (max=51200) global reference table overflow的log 08-08 04:11:53.052912 ??973 ?3243 F zygote64: indirect_reference_table.cc:256] JNI ERROR (app bug): global reference table overflow (max=51200) 08-08 04:11:53.053014 ??973 ?3243 F z

    2024年02月08日
    瀏覽(25)
  • Android 源碼淺析:Leakcanary 內(nèi)存泄漏檢測(cè)的好幫手

    我們一起來(lái)分析一下大名鼎鼎的 Leakcanary, 想必作為 Android 開發(fā)都多多少少接觸過(guò),新版本的 Leakcanary 也用 Kotlin 重寫了一遍,最近詳細(xì)查看了下源碼,分享一下。 tips:本來(lái)是只想分析下內(nèi)存泄漏檢測(cè)部分,但寫著寫著就跑偏了,因?yàn)閮?nèi)存泄漏的檢測(cè)難點(diǎn)在于對(duì)對(duì)象生命周期

    2024年02月02日
    瀏覽(22)
  • Android 內(nèi)存泄漏的常見原因及其對(duì)應(yīng)的解決方案

    Android應(yīng)用程序中常見的內(nèi)存泄漏原因有很多,以下是一些常見的原因及對(duì)應(yīng)的解決方案: 1. 靜態(tài)引用導(dǎo)致的內(nèi)存泄漏: 靜態(tài)變量持有對(duì)Activity或Fragment的引用,導(dǎo)致它們無(wú)法被垃圾回收機(jī)制釋放。 解決方案: 確保不將Activity或Fragment的實(shí)例賦值給靜態(tài)變量。如果確實(shí)需要使用

    2024年02月08日
    瀏覽(34)
  • Android TextView動(dòng)態(tài)地加載資源文件,避免Native 層內(nèi)存泄漏或內(nèi)存溢出

    在 Android 中,如果使用 TextView 的 setBackgroundResource() 方法設(shè)置背景,可能會(huì)導(dǎo)致 Native 層內(nèi)存增長(zhǎng)。這是因?yàn)?setBackgroundResource() 方法會(huì)將資源文件(例如圖片)加載到內(nèi)存中,如果頻繁地調(diào)用該方法,就會(huì)導(dǎo)致內(nèi)存泄漏或內(nèi)存溢出。 為了避免這種問(wèn)題,可以使用 TextView 的 s

    2024年02月09日
    瀏覽(23)
  • Android性能優(yōu)化之游戲收斂線程,減少OOM發(fā)生(epic 檢測(cè)線程調(diào)用/booster減少常駐線程超時(shí)銷毀)

    Android性能優(yōu)化之游戲收斂線程,減少OOM發(fā)生(epic 檢測(cè)線程調(diào)用/booster減少常駐線程超時(shí)銷毀)

    先來(lái)了解下一個(gè)空白app的進(jìn)程中線程數(shù)量 : 分析迷你世界中app線程之前,先來(lái)了解下空白app ,中線程情況: 一個(gè)空白app的線程大概是27個(gè): 一個(gè)空白的的app,包含F(xiàn)inalizerDaemon線程、FinalizerWatchd線程、RenderThread、主線程、ReferenceQueued、HeapTaskDaemon、SignalCatcher、GCDaemon、hwuiTa

    2024年02月14日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包