1,什么是內存泄漏?
1)內存泄漏和內存溢出
2)垃圾內存
2,怎么回收垃圾內存
1)C語言手動分配和回收
2)java 設計了GC垃圾回收機制
3,GC判斷垃圾內存的策略是什么
1)內存泄漏是一種主管的人為失誤造成的
2)java的GC回收機制:莫對象不再有任何的引用的時候才會進行回收
提問:反過來如果莫對象被別的對象引用了就不能被GC回收嗎?
答:否 無法往上追溯到GCroot 引用點的
軟引用,虛引用,弱引用
可以作為GC root 引用點的是
javastack中的引用的對象
方法區中靜態引用指向的對象
Memory Analyzer網盤鏈接
鏈接:https://pan.baidu.com/s/1c-u8sn6nhBCRCy3sStcB6Q
提取碼:gsb0
1,打開Android Studio 快速查看內存泄漏
adb shell dumpsys meminfo com.well10.ui -d ( 為包名)
當前泄漏 149 數字越大泄漏越多
2,在Terminal運行
adb shell monkey -p com.well10.ui -v 1000000
3,在右上角點擊Profile圖標
4,勾選正在運行的包名
5,點擊MEMORY
6,先點擊刪除圖標在點擊下載圖標
7,勾選Arrange by Package 快速查找包名所在位置
8,以查找到泄漏112數量
9,以上是快速得出結果,點擊下載圖標 Heap Dump
10,保存,也可以保存到其他目錄
11,找到你剛剛保存的路徑,把文件與路徑合並
12,使用 hprof-conv -z (跟上你剛剛合並的文件路徑.hprof),在跟上你合並的文件路徑,在后面添加容易識別的數字!在按 Enter鍵,
13,打開 Memory Analyzer軟件上面有網盤鏈接,
14,打開之后點擊 File 在點擊 Open Heap Dump下拉框 由於截不了圖,
15,點擊之后會彈框出來!點擊你剛剛創建的容易識別的文件
16,此時會彈框點擊Finish
17,點擊Overview,在點擊Histogram
18 點擊Group result by 圖標
19 ,勾選 Group by Package 下拉框截不了圖,也就是最后一個
20,找到包名!也許你的包名與我的不一樣
21,右擊勾選
23,自己與開發一起分析結果!我自己也不會了!