PHP物件型別在記憶體中的分配

2021-07-05 14:09:49 字數 910 閱讀 3194

物件型別和整型、字串等型別一樣,也是php中的一種資料型別。都是在程式中用於儲存不同型別資料使用的,在程式執行時它的每部分內容都要先載入到記憶體中再被使用。那麼物件型別的資料在記憶體中是如何分配的呢?先來了解一下記憶體結構。邏輯上記憶體大體被分為四段,分別為棧空間段、堆空間段、初始化資料段和**段,程式中不同型別資料的宣告將會被存在不同的記憶體段裡面。每段記憶體的特點如下。

①.棧空間段

棧的特點是空間小但被cpu訪問的速度快,是使用者存放程式中臨時建立的變數。由於棧的後進先出特點,所以棧特別方便用來儲存和恢復呼叫現場。從這個意義上講,我們可以把堆疊看成乙個臨時資料寄存、交換的記憶體區。用於儲存占用空間長度不變並且占用空間小的資料型別的記憶體段,例如整型1、100、10000等在記憶體中占用空間是等長的,占用空間都是32位的4個位元組。還有double、boolean等都可以儲存在棧空間段中。

②.堆空間段

堆是用於存放程序執行中被動態分配的記憶體段,它大小並不固定,可動態擴張或縮減。用於儲存資料長度可變或占用記憶體比較大的資料。例如,字串、陣列和物件就儲存在這段記憶體中。

③.資料段

資料段用來存放可執行檔案中初始化全域性變數,換句話說就是存放程式靜態分配的變數。

④.**段

**段是用來存放可執行檔案的操作指令,也就是說它是可執行程式在記憶體中的映象。**段需要防止在執行時被非法修改,所以只准許讀取操作,而不允許寫入(修改)操作。例如程式中的函式就儲存在這段記憶體中。

物件型別的資料就是一種占用空間比較大的資料型別,並且是占用的空間不定長的資料型別,所以物件建立完成以後被存放在對記憶體中,但物件的引用還是存放在棧裡面的。程式在執行時,佔記憶體中的資料是可以直接訪問的,而堆記憶體是不可以直接訪問的記憶體,但可以通過物件的引用名稱訪問物件中的成員。

PHP物件型別在記憶體中的分配

物件型別和整型 字串等型別一樣,也是php中的一種資料型別。都是在程式中用於儲存不同型別資料使用的,在程式執行時它的每部分內容都要先載入到記憶體中再被使用。那麼物件型別的資料在記憶體中是如何分配的呢?先來了解一下記憶體結構。邏輯上記憶體大體被分為四段,分別為棧空間段 堆空間段 初始化資料段和 段,程...

物件型別在記憶體中的分配

今天,我們來講講物件型別在記憶體中的分配!物件型別和整型 字串等型別一樣,也是php中的一種資料型別,在程式中儲存不同型別的資料,在程式執行時它的每一部分內容都要載入到記憶體中再被使用。那麼物件型別的資料在記憶體中是如何分配的呢?咱們先來了解下記憶體結構,邏輯上記憶體大體被分為四段,分別為 棧 堆 ...

PHP物件導向(PHP物件在記憶體中的分配)

對 像在php 裡面和整型 浮點型一樣,也是一種資料類,都是儲存不同型別資料用的,在執行的時候都要載入到記憶體中去用,那麼物件在記憶體裡面是怎麼體現的呢?記憶體從邏 輯上 說大體上是分為4 段,棧空間段 堆空間段 段 初始化靜態段,程式裡面不同的宣告 放在不同的記憶體段裡面,資料段 data seg...