【DAY25】NIO的学习笔记

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

时间: 2024-08-24 12:29:38

【DAY25】NIO的学习笔记的相关文章

Java NIO、NIO.2学习笔记

相关学习资料 http://www.molotang.com/articles/903.html http://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.html 目录 1. NIO.NIO.2简介 2. NIO中的关键技术 1. NIO.NIO.2简介 Java中的输入流.输出流都是阻塞式的输入.输出.不仅如此,传统的输入流.输出流都是通过字节的移动来处理的(即使是字符流,在底层也是通过字节流来进行处理的),也就是说,面向

Java NIO 缓冲区学习笔记

Buffer其实就是是一个容器对象,它包含一些要写入或者刚读出的数据.在NIO中加入Buffer对象,体现了新库与原I/O的一个重要区别.在面向流的I/O中,您将数据直接写入或者将数据直接读到Stream对象中. 在NIO库中,所有数据都是用缓冲区处理的.在读取数据时,它是直接读到缓冲区中的.在写入数据时,它是写入到缓冲区中的.任何时候访问NIO中的数据,您都是将它放到缓冲区中. 缓冲区实质上是一个数组.通常它是一个字节数组,但是也可以使用其他种类的数组.但是一个缓冲区不仅仅是一个数组.缓冲区提

Java NIO 完全学习笔记(转)

本篇博客依照 Java NIO Tutorial翻译,算是学习 Java NIO 的一个读书笔记.建议大家可以去阅读原文,相信你肯定会受益良多. 1. Java NIO Tutorial Java NIO,被称为新 IO(New IO),是 Java 1.4 引入的,用来替代 IO API的. Java NIO:Channels and Buffers 标准的 Java IO API ,你操作的对象是字节流(byte stream)或者字符流(character stream),而 NIO,你操

【DAY24】内省,NIO的学习笔记

java.lang.Class java.lang.reflect.Field java.lang.reflect.Method java.lang.reflect.Constructor //static代码块 Class.forName("",boolean , ClassLoader); JVM结构 ---------------- Ru.ntime Data Area 1.Method Area //方法区. 共享 2.Heap //存放对象和数组.共享 //Data acce

java NIO FileChannel 学习笔记 FileChannel 简介

java NIO 中FileChannel 的实现类是  FileChannelImpl,FileChannel本身是一个抽象类. 先介绍FileChannel File Channels 是线程安全的.Channel的close方法可以随时执行(正如Channel接口所要求的).任何企图修改filechannel 对应文件大小 或者修改 filechannel position的操作都必须串行执行,第二个操作会一直阻塞直到前一个运行完.不过这些方法,具体还要看如何实现.(下文分析FileCha

java nio学习笔记(一)

位置保留,待用 java nio学习笔记(一),布布扣,bubuko.com

NIO学习笔记1

NIO引入了三个概念: Buffer 缓冲区 Channel 通道 selector 选择器 1.java.io优化建议 操作系统与Java基于流的I/O模型有些不匹配.操作系统要移动的是大块数据(缓冲区),这往往是在硬件直接存储器存取(DMA)的协助下完成的.I/O类喜欢操作小块数据——单个字节.几行文本.结果,操作系统送来整缓冲区的数据,java.io的流数据类再花大量时间把它们拆成小块,往往拷贝一个小块就要往返于几层对象.操作系统喜欢整卡车地运来数据,java.io类则喜欢一铲子一铲子地加

OpenGL ES学习笔记(二)&mdash;&mdash;平滑着色、自适应宽高及三维图像生成

首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <Android学习笔记--OpenGL ES的基本用法.绘制流程与着色器编译>中实现了OpenGL ES的Android版HelloWorld,并且阐明了OpenGL ES的绘制流程,以及编译着色器的流程及注意事项.本文将从现实世界中图形显示的角度,说明OpenGL ES如何使得图像在移动设备上显示的更加真实.首先,物体有各种颜色

Mina框架的学习笔记——Android客户端的实现

Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架.当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发.串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进一步的扩展中.目前正在使用 MINA 的软件包括有:Apache Directory Project.Asyn