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