Java基礎之數組隊列及Java堆外內存學習筆記[圖]

Java基礎之數組隊列及Java堆外內存學習筆記[圖]
1.數組
1.1 數組基本概念:
數組是一個容器,能夠存儲同一數據類型的N個數據;數組是一個數據結構,是數據結構中訪問速度最快的;
數組是直接經過下標進行定位;
數組是屬於引用數據類型(數組名中存儲的是內存首地址);數組自己只有有length屬性(獲取數組能存儲的數據個數),可是有從Objuect父類繼承的屬性和方法。
1.2數組在內存中的存儲:
數組在內存中是一個連續的存儲空間;一維數組、二維數組....
1.3數組排序:堆排序
2.數組隊列
利用數組這個數據結構,來實現多個數據的類。數組在定義的時候要定義類型和大小,定義完後不能修改(不能動態改變大小和數據類型)。
存儲數據的個數是會根據實際狀況進行變化,可是數組大小沒法改變。
不肯定要存儲的個數:
數組定義大了,數據小了,浪費空間;數組定義小了,數據多了,越界、存儲不下。要知足上述兩種要求,利用數組名中存儲的是數組對象在堆內存中的首地址。存儲數據類型,在單獨某一個程序使用中是不會存在太大問題。
數組隊列是否可以通用,數據類型。Object是全部類的父類:Java中全部基本數據類型都由對應一個類,其父類爲Object。
若是要求數組中只能存儲某一種數據類型;若是要求數組中能夠存儲任何數據類型。要知足上述兩種要求,只能使用Java泛型。
泛型不是數據類型,是一種特殊的符號,用於泛指Java中任意一種引用類型。在編寫數組隊列(提供的插件類),不肯定以後要存儲的數據類型,則只能使用泛型的表示。泛型在此處只是一個佔位符,以後在使用中。
Java堆外內存:
1. 首先了解堆內內存on-heap memory 
這裏寫圖片描述 
2. 定義:off-heap memory
堆外內存就是把內存對象分配在Java虛擬機的堆之外的內存。這些內存直接受操做系統管理(而不是虛擬機),咱們仨讀後感(http://www.simayi.net/duhougan/2472.html)心得體會及感悟,這樣作的結果就是可以在必定程度上減小垃圾回收對應用程序形成的影響。
3. 特色
一、減小了垃圾回收
由於垃圾回收會暫停其餘的工做。
二、加快了複製的速度
堆內在flush到遠程時,會先複製到直接內存(非堆內存),而後在發送;而堆外內存至關於省略掉了這個工做。
4. 堆外內存的管理:DirectByteBuffer
DirectByteBuffer類是在Java Heap外分配內存,對堆外內存的申請主要是經過成員變量unsafe來操做; 
ByteBuffer bb = ByteBuffer.allocateDirect(1024*1024*128);
5. 其餘
System.gc使用-XX:+DisableExplicitGC能夠禁掉;
經過-XX:+ExplicitGCInvokesConcurrent也能夠作並行gc;
最多見的場景是RMI/NIO下的堆外內存分配等;html

相關文章
相關標籤/搜索