陣列這個傢伙的記憶體分析

2021-06-19 15:12:58 字數 1448 閱讀 1221

實在是好幾天都沒更新啦……找個陣列記憶體分析來濫竽充數一下……嘿嘿……

一:宣告乙個int型別的陣列:

int a ;  //宣告乙個int型別的陣列a

a = new int[5];  //為陣列a分配的長度為5

記憶體分析如圖:

過程1為宣告過程,因為此時僅僅是宣告,並為為其陣列本身分配空間,所以在棧中分配了一塊引用a的空間,其值為預設值null.

過程2為陣列分配了空間,注意new int[5]的過程,也是在堆中分配了一塊空間,用來存放這個長度為5的陣列,但此時陣列的值仍為int的初始值:0.

二:宣告乙個引用型別的陣列:(注意與int型別的陣列的區別!)

class person //定義乙個person類

}

person person; //注意此種陣列與int型別陣列的區別:此person陣列是乙個引用型別的陣列!!!

person = new person[3];

person[0] = new person("張三","man",18);

person[1] = new person("李四","man",19);

person[2] = new person("狗蛋","woman",18);

記憶體分析如圖:

引用型別的陣列與int型別的陣列乙個最大的區別就是:引用型別的陣列其陣列成員是引用,而並非像int型別的陣列一樣裝的是int值。所以

person = new person[3];的記憶體執**況是在堆中又分配了3塊空間,但這3塊空間內裝的不是值,而是3個引用,其初始值為null.當為每乙個person成員賦值乙個具體的person物件時,堆中的這3塊空間中的引用才會指向自己所應該指向的那個new出來的person物件。

(重點就是記這一句話就行:引用型別的陣列中的成員裝的是引用!)

java陣列記憶體分析

首先學習幾個單詞 index 索引 bounds 邊界 assigned 指定 陣列 相同資料型別的有序集合 陣列也是物件 長度是不可變的,越界報array index out of bounds exception 陣列語法 宣告int a int a 建立 new int 4 初始化 預設初始化...

這個對協程的分析不錯

協程誕生解決的是低速io和高速的cpu的協調問題,解決這類問題主要有三個有效途徑 非同步非阻塞網路程式設計 libevent libev redis nginx memcached這類 協程 golang gevent 輕量級執行緒 相當於是在語言層面做抽象 erlang 對比之下協程的程式設計難度...

Android的記憶體分析

最近在幫助客戶做gts測試遇到乙個很奇怪的現象。在gts測試過程中,先測試media後然後測試playerstore時,會一直失敗。但是如果不放在media測試後面就不會出問題。經過2天的檢查和log分析,終於找到問題啦。在測試playstore 時遇到呼叫launcher,在執行media測試時,...