頻繁被使用java
jdk1.4加入NIO(New Input/Output),一種基於通道與緩衝區的I/O方式,併發
能夠使用Native函數庫直接分配堆外內存,經過java堆中的DirectByteBuffer對象做爲這塊內存的引用進行操做。這樣避免了在Java堆和Native堆中來回複製數據,提升性能。函數
注意:此部分的內存不受java堆大小的限制,收本機總內存的限制,配置虛擬機內存時,不可以忽略此處的內存,不然會致使動態擴展時出現OutOfMemoryError異常。高併發
new指令 --》檢查指令參數可否在常量池中定位一個類的符號引用,這個符號表明的類是否已被加載、解析和初始化過。----》若是沒有,必須先執行相應的類加載過程 -----》爲新生對象分配內存佈局
分配內存方式:指針碰撞(堆內存絕對規整)性能
空閒列表(堆內存不是規整的)spa
是否規整由採用的垃圾收集器是否帶有壓縮整理功能決定。線程
對象的頻繁建立(高併發)解決方案:指針
方案一:同步處理,採用CAS配上失敗重試,保證跟新操做的原子性;對象
方案二:內存分配的動做按照線程劃分在不一樣的空間之中進行。(本地線程分配緩衝 Thread Local Allocation Buffer ,TLAB)
---》虛擬機對對象進行必要的設置(該對象是哪一個類的實例,對象的哈希碼值)
----》一個對象產生了(從虛擬機視角)
對象建立剛剛開始(從java程序的視角) ------<init>方法尚未執行。