物件的簡單記憶體分析

2021-07-04 22:30:52 字數 751 閱讀 8983

1.我們先來建立乙個person類:

#import 

@inte***ce

dcperson : nsobject

-(void)eat;

-(void)walk;

@end

**很簡單,就沒有寫注釋了。首先是建立乙個dcperson類,這個類有兩個屬性,age和name。同時有兩個方法,分別是-(void)eat和

-(void)walk。

當我們在程式中建立乙個類的時候,在記憶體中會給類分配記憶體,首先類肯定是有位址的,其次類中會有對應的方法。

當我們使用類建立物件的時候,會相應的給物件分配儲存空間。例如我們建立兩個物件person1和person2。

- (void)viewdidload
這樣,記憶體中就會多出兩塊區域,用來存放person1物件和person2物件。

下面先上圖,結合來分析大概的情況。

當我們使用類建立乙個物件的時候,每個物件就會有乙個isa指標,當我們給物件傳送訊息的時候,物件會通過自身的isa指標去類中找對應的方法,從來來實現方法。屬性是每個物件特有的,而方法是所有物件共有的,只有乙份。類在記憶體中只會被載入一次。

以上是一些自己對物件記憶體的簡單分析,只是做了一些很簡單的分析,有不對的地方還望大神指正,謝謝!

物件記憶體分析

定義乙個類,用來模擬 手機 事物。屬性 品牌,顏色 行為 打 發簡訊 對應到類中 成員變數 屬性 string brand 品牌 double price string color 顏色 成員變數 行為 public void call string who 打 public void sendme...

物件導向的記憶體分析

棧的特點如下 1.棧描述的是方法執行的記憶體模型。每個方法被呼叫都會建立乙個棧幀 儲存區域性變數 運算元 方法出口等 2.jvm為每個執行緒建立乙個棧,用於存放該執行緒執行方法的資訊 實際引數 區域性變數等 3.棧屬於執行緒私有,不能實現執行緒間的共享 4.棧的儲存特性是 先進後出,後進先出 5.棧...

物件導向的記憶體分析

一 棧的特點如下 棧描述的是方法執行的記憶體模型。每個方法被呼叫都會建立乙個棧幀 儲存區域性變數 運算元 方法出口等 2.jvm為每個執行緒建立乙個棧,用於存放該執行緒執行方法的資訊 實際引數 區域性變數等 3.棧屬於執行緒私有,不能實現執行緒間的共享 4.棧的儲存特性是 先進後出,後進先出 5.棧...