ByteBuffer
runtime data area
1.method area(共享)
2.heap (共享)
3.java stack(非)
4.native method stack(非)
5.program couter register(非)method frame(stack frame)
从heap角度
1.heap //young gen(eden + survivor0 + survivor 2) + old gen.
2.non-heapperm | metaspace
3.off-heapjvm之外的内容
jvm调优
-Xmx
-Xms
-Xmn //young
-XX:NewSize=
-XX:MaxNewSize=
java -Xmx xx.x.xx.App
反射
动态访问对象的属性和方法。
Class //类
Method //方法,成员函数
Field //字段,成员变量
Constructor //构造函数private
Field[] fs = getDeclaredFields() for(Field f : fs){ get + "" }
内省
Introspector.
操作javabean。
设计模式
单例(无状态)
池化模式(无状态)
装饰
适配器
builder
factory
代理模式.
反射技术.
Introspector: //JavaBean动态访问对象属性和方法。
Class //
Method //
Field //
Constructor //
IO
InputStream //read
OuputStream //writeReader //
Writer //字符流BufferedInpustStream //
BufferedOutputStream //BufferedReader
BufferedWriterInputStreamReader
ObjectInputStream
ObjectOutputStreamByteArrayInputStream
ByteArrayOutputStream
NIO:New IO
ServerSocket ss = new ServerSocket(8888);
//阻塞的
while(true){Socket s = ss.accept();InputStream is = s.getInputStream();//阻塞的while(true){is.read(buf);}...
}
NIO : java.nio.Buffer
[java.nio.Buffer]
容器,线性的,有限的.
Capacity //容量
limit //限制
position //指针位置
mark //记号(标记)//分配字节缓冲区
ByteBuffer buf = ByteBuffer.allocate(20); //
ByteBuffer buf = ByteBuffer.allocateDirect(20); //直接内存(离堆)java.nio.ByteBuffer/\|--------------java.nio.HeapByteBuffer //堆内存区|--------------java.nio.DirectByteBuffer //离堆内存区.get() //读put() //写position() //取出指针位置position(int ) //设置指针新位置limit() //设置指针新位置limit(int l) //设置新limitflip() //0 <= mark <= position <= limit <= capacity
GC
garbage collection,垃圾回收。
对象回收的条件:没有任何一个指针能够直接或间接达到的话,就回收了。
Person p = new Person();
Person p2 = p ;
p = null ;List<Person> list = new ArrayList<Person>();
list.add(p2);
p2 = null ;list.clear();
ByteBuffer.flip()
java.nio.ByteBuffer中flip、rewind、clear方法的区别
对缓冲区的读写操作首先要知道缓冲区的下限、上限和当前位置。下面这些变量的值对Buffer类中的某些操作有着至关重要的作用:
1. limit:所有对Buffer读写操作都会以limit变量的值作为上限。
2. position:代表对缓冲区进行读写时,当前游标的位置。
3. capacity:代表缓冲区的最大容量(一般新建一个缓冲区的时候,limit的值和capacity的值默认是相等的)。
flip、rewind、clear这三个方法便是用来设置这些值的。
clear方法
public final Buffer clear()
{position = 0; //重置当前读写位置limit = capacity; mark = -1; //取消标记return this;
}
clear方法将缓冲区清空,一般是在重新写缓冲区时调用。
flip方法
public final Buffer flip() {limit = position;position = 0;mark = -1;return this;
}
反转缓冲区。首先将限制设置为当前位置,然后将位置设置为 0。如果已定义了标记,则丢弃该标记。 常与compact方法一起使用。通常情况下,在准备从缓冲区中读取数据时调用flip方法。
rewind方法
1public final Buffer rewind() {
2 position = 0;
3 mark = -1;
4 return this;
5}
转载于:https://www.cnblogs.com/yihaifutai/p/6787468.html
ByteBuffer相关推荐
- Java NIO 之 ByteBuffer()
2019独角兽企业重金招聘Python工程师标准>>> 名词解释 capacity : 容量,表示缓冲区中最大存储数据的容量.一旦声明不能改变. limit : 界限,表示缓冲区中可 ...
- java bytebuffer 大小,bytebuffer 获取长度
练习题4 ? 问题:对于以下代码: int n=(byteBuffer); //假定n>=0 (); 假定执行(byteBuffer)方法前,byteBuffer的 容量.极限和位置分别为c.l ...
- ByteBuffer详解
2019独角兽企业重金招聘Python工程师标准>>> 在Java nio中,主要有三大组件:Buffer,Channel和Selector.这三者之间的关系可以按照如下方式进行理解 ...
- 一条消息是如何按照二进制协议写入到Batch中的ByteBuffer中的
double-check模式中会将消息放到Batch中: //将消息放到batch中去 FutureRecordMetadata future = Utils.notNull(batch.tryApp ...
- 深入理解ByteBuffer
2019独角兽企业重金招聘Python工程师标准>>> ByteBuffer类是在Java NIO中常常使用的一个缓冲区类,使用它可以进行高效的IO操作,但是,如果对常用方法的理解有 ...
- java socket 字节读取_Java SocketChannel 读取ByteBuffer字节的处理模型
在JAVA中的流分为字节流或字符流,一般来说采用字符流处理起来更加方便.字节流处理起来相对麻烦,SocketChannel中将数据读取到ByteBuffer中,如何取出完整的一行数据(使用CRLF分隔 ...
- java bufferarray_如何使用Java的ByteBuffer.arrayOffset()方法
Returns the offset within this buffer's backing array of the first element of the buffer (optional o ...
- 【Java 网络编程】TCP 数据传输示例 ( 客户端参数设置 | 服务器端参数设置 | ByteBuffer 存放读取数据类型 )
文章目录 I 客户端代码示例 II 服务器端代码示例 III 运行结果 I 客户端代码示例 import java.io.IOException; import java.io.InputStream ...
- FileChannel与ByteBuffer的使用示例
DirectByteBuffer直接内存的使用场景和作用 生命周期长的大对象, 减少java堆GC, 减少内存copy http://www.importnew.com/26334.html 1 pu ...
- ByteBuffer支持类型化的put和get。
package com.atguigu.nio;import java.nio.ByteBuffer;public class NIOByteBufferPutGet {public static v ...
最新文章
- centos7 下搭建git服务器
- PHP使用BC Math 函数处理浮点运算问题
- 6.3 Spring Boot集成mongodb开发
- oracle sql developer 出现 : 适配器无法建立连接问题解决方案 The Network Adapter could not establish the connection...
- maven私服-详细部署搭建笔记
- linux su无效_如何处理Linux中su命令无反应的情况
- 【Java】while(scanner.hasNext()){}引发“死循环”的处理方法
- 《趣学JavaScript——教孩子学编程》——2.4 Boolean
- mysql翻译逗号隔开的字典_【多测师小课堂】python数据类型之列表、字典、元祖、字符串...
- 常用js框架,js库
- ie7span标签float换行悬浮
- Message Unable to connect to SQL Server '(local)'
- 解决python写入文件数据不全的问题
- 拓展练习--find查找、打包压缩、服务器、磁盘挂载
- 手机版wps怎么制作折线图_wps怎么制作目录
- 目标客户画像_做营销时,如何做好目标用户群体画像?
- C# 打开和关闭软键盘
- Pray for 京阿尼——愿逝者安息,伤者早日康复
- 刘同——谁的青春不迷茫,给你冬日满满正能量
- Android调用新版百度天气api,解决地理编码问题
热门文章
- LVS(4)——规则相关操作
- caffe训练输入数据格式介绍(LMDB/imagelist)
- VC6.0 DLL项目与WINDOWS项目的转换
- springboot使用redisTemplate 报错:APP FAILED TO START Field template in required a single bean redis工具类
- Android 使用SWIG生成Jni代码
- CF-196 D.The Next Good String(hash)
- 离散数学及其应用上的一个问题
- UEFI下用rufus安装ubuntu16.04 LTS
- Linux下的/bin、/sbin、/usr/bin、/usr/sbin目录
- redis3.0 java spring_spring整合redis以及使用RedisTemplate的方法