1 記憶體分割槽
我們通常將記憶體分割槽劃分為以下幾大塊。
(1)棧區
(2)堆區
(3)全域性區
(4)常量區
(5)**區
我們知道任何乙個程式在執行的時候實際上是執行在記憶體中的,這個記憶體也就是我們常說的主存,也叫執行記憶體,也叫ram(random access memory),是可以直接與cpu交換資料的內部儲存器。記憶體讀取資料很快,所以作為作業系統執行程式的區域,不同的分割槽儲存不同的值,值可以為指標,可以為物件,可以為二進位制**,可以為數字元,每個分割槽都有自己的功能,它們一起協作為系統提供更好的任務劃分。如下圖所示
下面來詳細說明每個分割槽的功能。
棧區(stack): 棧區是由系統來自動分配釋放,是乙個棧的資料結構,儲存函式的引數、區域性變數、引用。
堆區(heap):堆區是由開發者「手動管理」或者程式結束時由系統全部**,是一種樹狀的資料結構,一般用於儲存由malloc、new等方式建立的物件。在ios開發中,大多數關於記憶體管理的問題也多出於此:多是一些開發者沒有及時**記憶體,或者記憶體溢位以及洩露等問題。
全域性區(靜態儲存區):用於存放全域性變數和靜態變數,儲存方式是:未經初始化的全域性變數和靜態變數存放在乙個區域,初始化後的全域性變數和靜態變數在另乙個區域。**方式也是等程式結束後由系統**。
文字常量區:主要儲存基本資料型別的值,以及常量,同樣是程序結束後由系統**。
**區:儲存要執行函式的二進位制**,如果需要執行就載入到該區域中。
HashMap底層實現分析
1.1 建立 mappersonmap new hashmap 在堆記憶體開闢空間。成員變數transient node table,transient代表不會被序列化,預設為null。static class node implements map.entry public final k get...
Python 物件底層實現分析
pyobject物件是一切python物件共有的部分,包含以下內容 typedef struct object pyobject pyobject是所有物件共有的頭部,所以可以通過pyobject 來引用任意乙個物件,類似於c 的繼承。python中除了有物件可分為兩種 定長物件 int,float...
ArrayList底層實現和原理分析
今天是週末,沒什麼事就在家裡看了一下原始碼,我習慣使用jdk1.8,所以我的 全都是基於jdk1.8,好了下面是正文,今天來說說arraylist的底層實現和源 首先,集合arraylist是list的實現類,list還有兩個實現類linkedlist和vector。先說說這幾個實現類的區別吧 1....