1. 程式人生 > >關於jvm\hashmap和java資料結構個人的一些理解

關於jvm\hashmap和java資料結構個人的一些理解

Jvm
類載入器(驅動)、執行時資料區(記憶體)、執行引擎(cpu)
驅動讀取檔案 存入記憶體 cpu去執行記憶體中的資料

記憶體包括5各部分 程式計數器、java棧、本地方法棧、 方法區和java堆
程式計數器、java棧、本地方法棧是執行緒私有的 一個執行緒一個棧
堆和方法區是公有的
Cpu通過程式計數器獲取下一指令地址
Java棧儲存私有資料 本地方法棧 預設執行的本地方法庫
Java堆 儲存例項 方法區 :所有定義的方法和資訊 ,類載入器從此地讀取class檔案 包括靜態變數常量+類資訊(介面+構造方法)+執行時常量池

Java資料結構
陣列 棧 佇列 連結串列 樹 堆 hash 圖
陣列 :變數有序
棧:先進後出
佇列:線性表 前端刪除 後面插入資料
連結串列:物理儲存中非連續、非順序的儲存結構通過連結串列的指標連線而有了一定的邏輯順序
樹 特性是隻有一個根節點,並且其他節點只有一個前驅可以有多個後繼
堆 堆是一種特殊的樹形結構 每個節點有一個值 根節點最大(最小)
Hash(散列表)對於關鍵字和K相等的欄位 直接通過hash function獲取
圖(graph)將節點稱為頂點 兩頂點之間存在一條邊,則稱兩頂點之間有相鄰關係

HashMap
基於雜湊表的map介面的非同步實現 ,他是連結串列雜湊的資料結構
本質上就是一個數組結構 Entry就是陣列上的元素
每個entry都持有下一個陣列的引用
根據hash後的key值獲取地址存放value
獲取鍵值對時首先將keyhash後獲取記憶體地址 然後通過。Equals方法獲取該entry