1、請簡述JAVA引用中的’強引用’、‘弱引用’、‘虛引用’的用法和回收時機
1.強引用 – GC不會回收(必需品)
2.軟引用 – 記憶體不夠就回收,記憶體夠的話就不會回收。(可有可無)
3.弱引用 – GC在掃描的時候,一旦發現即刻回收。
4.虛引用 – 随時都會被回收
2、請用JAVA語言實作一個簡單的單例模式
public class SingleTon{
private SingleTon(){}
public static SingleTon instance;
public SingleTon getInstance(){
synchronized(SingleTon.class){
if(instance == null){
synchronized(SingleTon.class){
instance = new SingleTon();
}
}
}
return
3、JAVA線程的sleep()、wait()、notify()、yield()方法的差別
sleep() 線程休眠一段時間,一段時間結束後,線程進入可執行狀态,等待CPU排程。休眠期間,不釋放持有的鎖。
wait() 線程休眠一段時間,如果設定參數,時間到時,線程自動進入可執行狀态。若沒有,則需要notify()方法喚醒。wait和notify都是針對this對象的,調用wait之後,會釋放加載對象上的鎖。
4、什麼是Android ARN? Android ARN 有幾種類型?如何定位ANR?
Android ANR 即程式無響應異常。
Android ANR 一般有3種類型:
KeyDispatchTimeout(5 sceonds) 按鍵或觸摸事件在特定時間無響應
BoardcastTimeOut(10 sceonds) BoardcastReceiver 在特定的時間内無響應
ServiceTimeout(20 seconds) Service在特定的時間内無法處理完成
解決ANR的姿勢:
1.檢視LOG,擷取ANR類型
2.檢視分析trace.txt檔案(需root)
chrom 777 /data/arn
rm /data/arn/traces.txt
ps
kill -3 PID
adb pull data/anr/traces.txt ./mytraces.txt