當前位置:首頁 » 安卓系統 » androidstatic

androidstatic

發布時間: 2023-06-07 07:04:56

1. android static變數為什麼會導致內存溢出

Android 內存溢出的原因和解決方案如下: 1.Android的虛擬機是基於寄存器的Dalvik,它的最大堆大小一般是16M,有的機器為24M.因此我們所能利用的內存空間是有限的.如果我們的內存佔用超過了一定的水平就會出現OutOfMemory的錯誤.原因主要有兩個: l 由於我們程序的失誤,長期保持某些資源(如Context)的引用,造成內存泄露,資源造成得不到釋放. l 保存了多個耗用內存過大的對象(如Bitmap),造成內存超出限制. 2. Static static是Java中的一個關鍵字,當用它來修飾成員變數時,那麼該變數就屬於該類,而不是該類的實例.所以用static修飾的變數,它的生命周期是很長的,如果用它來引用一些資源耗費過多的實例(Context的情況最多)就要謹慎對待了.例如xxx源碼: public class IntentMapping { private static Contextcontext; //. . . }

2. android中的static

1. static變數

按照是否靜態的對類成員變數進行分類可分兩種:一種是被static修飾的變數,叫靜態變數或類變數;另一種是沒有被static修飾的變數,叫實例變數。兩者的區別是:
對於靜態變數在內存中只有一個拷貝(節省內存),JVM只為靜態分配一次內存,在載入類的過程中完成靜態變數的內存分配,可用類名直接訪問(方便),當然也可以通過對象來訪問(但是這是不推薦的)。對於實例變數,沒創建一個實例,就會為實例變數分配一次內存,實例變數可以在內存中有多個拷貝,互不影響(靈活)。

2. static代碼塊
static代碼塊是類載入時,初始化自動執行的。如果static代碼塊有多個,JVM將按照它們在類中出現的先後順序依次執行它們,每個代碼塊只會被執行一次。

3. static方法
static方法可以直接通過類名調用,任何的實例也都可以調用,因此static方法中不能用this和super關鍵字,不能直接訪問所屬類的實例變數和實例方法(就是不帶static的成員變數和成員成員方法),只能訪問所屬類的靜態成員變數和成員方法。因為static方法獨立於任何實例,因此static方法必須被實現,而不能是抽象的abstract。
static方法只能訪問static的變數和方法,因為非static的變數和方法是需要創建一個對象才能訪問的,而static的變數/方法不需要創建任何對象。

********
static的數據或方法,屬於整個類的而不是屬於某個對象的,是不會和類的任何對象實例聯繫到一起。所以子類和父類之間可以存在同名的static方法名,這里不涉及重載。所以不能把任何方法體內的變數聲明為static,例如:
fun() {
static int i=0; //非法。
}
其實理解static是只有一個存儲地方,而使用時直接使用,不需要創建對象,就能明白以上的注意事項。

另外,一般的類是沒有static的,只有內部類可以加上static來表示嵌套類。

熱點內容
電腦怎麼選擇配置 發布:2025-05-14 10:46:12 瀏覽:325
電腦怎麼不顯示手機連接伺服器失敗 發布:2025-05-14 10:42:28 瀏覽:9
安卓如何下載lv手游 發布:2025-05-14 10:35:45 瀏覽:383
pythondict添加key 發布:2025-05-14 10:33:59 瀏覽:382
柱子箍筋加密區長度 發布:2025-05-14 10:18:29 瀏覽:352
雲伺服器和內網穿透哪個好 發布:2025-05-14 10:16:41 瀏覽:627
安徽新能源網路配置是什麼 發布:2025-05-14 10:06:24 瀏覽:631
pinode搭建伺服器 發布:2025-05-14 10:04:23 瀏覽:4
電腦伺服器ip名稱 發布:2025-05-14 10:01:09 瀏覽:749
connectorpython 發布:2025-05-14 09:48:50 瀏覽:763