NIO:New IO
-----------------
1.ByteBuffer
allocate: 堆分配
allocateDirect : 直接分配.
Channel:
mark <= position: <= limit <= capacity
flip(): 拍板. limit = position ; position = 0 ;
clear(): limit = capactiy | position = 0 | mark = -1;
rewind(): 重來,pos = 0 , mark = - 1;
slice(): HeapByteBuffer(實現),構造新的ByteBuffer,操縱同一數組,各項參數做了不同解釋。
將原來的remaining部分整體遷移。
切片byte[] buf,int mark, int pos, int lim, int cap, (hb, -1, 0, this.remaining(),this.remaining();
compact(): 整理房間。
MappedByteBuffer//映射的字節緩衝區
-----------------------------------------
1.FileChannel.map(mode,pos,length)
selector :
------------------
1.內部維護三個SelectionKey集合
a.所有註冊的Channel對應的key集合.
b.selectionKeys,挑選出來的發生了感興趣事件key集合。
c.cancelledKeys,刪除的key集合。
2.selector.select()
阻塞模式,只有返回值 >= 1才返回。
挑選發生感興趣事件的key放到seletionKeys集合中,不會刪除原有的key。
需要開發人員手動刪除selectionKey。
jconsole
------------
heap//堆,年輕代(eden區 + 倖存區(倖存一區 + 倖存二區)) + 年老代 --->JVM
non-heap//非堆,方法區(metaspace + code cache + compressed class space) , 永久代 -- >JVM
直接字節緩衝區
--------------
DirectByteBuffer//jvm之外,OS
殺死進程
--------------
1.windows
taskkill
kill
2.linux
kill